avatar

tetsai

原创声明

本文由tetsai原创,转载请注明来源

原码

最高位表示符号,剩下的表示数

比如-5,5的二进制是0101,因为是负数,所以有符号,有符合就是1,所以就变成了

10101=-5 (原码)

反码

如果是正数,反码=原码,如果是负数,则最高位不动,剩下的0变1,1变0,也就是说

原码10101的反码是11010

原码00101的反码是00101

补码

反码+1就可以得到补码了

反码11010的补码是11011

反码00101的补码是00110

有啥卵用?

补码保证了负数与正数相加的结果正确,比如

11011(-5)+00110(5)=10001

10001肯定也是补码,它会是多少?

先减一得反码10000,可以看见数字是0

引用:

所以反码表示法其实已经解决了减法的问题,他不仅不会像原码那样出现两个相反数相加不为零的情况,而且对于任意的一个正数加负数,如:
0001(1)+1101(-2)=1110(-1) 计算结果是正确的。

具体详情可以看,我就不转了:https://www.imooc.com/article/16813

发表评论

电子邮件地址不会被公开。 必填项已用*标注