位运算涉及到二进制,需要了解二进制的基本知识。
二进制概述:在我们的计算机编程领域, 不管你使用什么编程语句(java, c#, php 等),在计算机中 都是以二进制的方式来运行的。 他的最大特点是 逢二进一。0、1是基本算符。
(1)二进制的最高位是符号位: 0表示正数,1表示负数
(2)正数的原码,反码,补码都一样
(3)负数的反码=它的原码符号位不变,其它位取反
(4)负数的补码=它的反码+1
(5)0的反码,补码都是0
(6)php没有无符号数,换言之,php中的数都是有符号的
(7)在计算机运算的时候,都是以补码的方式来运算的
下面给出一些示例,说明推倒过程。
总结:在计算机中,数字都是以补码得形式进行运算的,如果一个数是正数的话,正数的原码、反码、补码都是一样的。如果一个数是负数的话,负号用二进制的最高位1表示(0表示正数,1表示负数),负数的反码是符号位不变,其余位数全部取反,负数的补码等于反码+1。如果我们计算的二进制结果的最高位是1,代表是负数。所以我们还需要将其转换为原码。如果是正数就不用转换了,因为正数的原码、反码、补码都是一样的。