为什么要学习原码、反码、补码呢?先来认识下计算机中的原码、反码以及补码。
原码
就是二进制定点表示法,即最高位为符号位,“0“表示正,“1“表示负,其余位表示数值的大小。
通过一个字节,也就是8个二进制位来表示7和-7:
7: 00000111(符号位0表示正数)
-7:10000111(符号位1表示负数)
反码
正数反码与其原码相同,负数对其原码逐位取反,但符号位除外;
7的反码: 00000111
-7的反码:11111000
补码
正数反码与其原码相同,负数是在其反码的末位加一;
7的反码: 00000111
-7的反码:11111001
补码相加
7+(-7):
0 0000111
1 1111001
10 0000000 由于一个字节是八位,舍去开头的1.
0 0000000 得到相加结果为0.
小结
正数的原反补码均相同。
负数根据原码求反码(除符号位外逐位取反)、再根据反码求其补码(末位加一)。
负数根据补码求反码(末位减一)、再根据反码求其原码(除符号位外逐位取反)。
计算机中的加减即是补码之间的加法操作。
关于计算机如何以加法实现减法操作,看到一篇非常好的博文,共同学习,在此附上链接 http://www.cnblogs.com/zhangziqiu/ ,并向大佬致敬。