上来先敲黑板,说重点(重要的事情说三遍):
- 计算机中以补码进行存储计算
- 计算机中以补码进行存储计算
- 计算机中以补码进行存储计算
所以,一切的运算都要先得到数据的补码,不要上来就拿原码在那干,得到的结果会漫天飞舞,正负数一起算会算到你怀疑人生。。可以尝试将十进制数字的二进制打印出来看看,正数还算正常,负数的那玩意是什么鬼(e.g. -3=11111111111111111111111111111101
)。。
正数
正数的原码、反码和补码都一样(不要问我为什么,就是这么规定的。。我也很无奈啊。。)
负数
负数的反码是符号位不变,其余为取反。负数的补码是其反码加一。
负数的计算方式,注意这里是算