天天看点

2-2.(OOP)位运算(原码、反码、补码)

位运算

1)理论上的进制转换

    十进制转二进制:12->1100

    二进制转十进制:1100-> 1*2^3+1*2^2+0*2^1+0*2^0=12

2)原码(数值的原码)

     原码是数值的真值的绝对值的最高位表示符号位

      正数用 0

      负数用 1

      当前PHP运行的环境里一个整数占多少位?(有的占32位有的占64位)

      var_dump(PHP_INT_SIZE)能确定当前运行环境一个整数占几个字节,一个字节是8个位

      一个整数占4*8=32位

      00000000000000000000000000000001100 [12的原码] 

      10000000000000000000000000000001100 [-12的原码] 

3)反码

      正数的反码就是其值本身(和其原码相同)

      负数的反码:符号位不变,其他位取反

      00000000000000000000000000000001100 [12的反码] 

      10000000000000000000000000000001100 [-12的原码]

      1111111111111111111111111111111111110011 [-12的反码]

4)补码

     正数的补码就是其本身(和其原码相同)

     负数的补码:其值的反码加1

     00000000000000000000000000000001100 [12的补码] 

     1111111111111111111111111111111111110100 [-12的补码]

注:

计算机中数值一律采用“补码”的形式表示、处理、存储、运算,减少计算机硬件电路的复复杂性

var_dump(decbin(-12)) 函数可以进行二进制和10进制之间的互相转换,用于证明我们刚刚的结论