经过今天上午查阅多篇资料后总结出,所有的位运算,都是遵循以下三个步骤的:
- 把数字转化为补码,目的是方便机器计算
- 进行位运算
- 把补码转化为原码,目的是方便人看。
在这一步中,通常的做法是对补码再求一次补码,其原理就是补码的补码是原码。
在求补码的时候,一定要注意:正数(符号位为0)的补码就是原码,正数原、反、补码一模一样!
这个就造成了有的时候看起来好像跳过了第1步或第3步,但是也能算对,可能就是因为有正数参与运算,或者第2步得到一个符号位为0的结果。
之前没有把这一点想明白,然后纠结了一个上午。。。