正数:原码、反码、补码一样
[+7]原= 0 0000111 B
[+7]反= 0 0000111 B
[+7]补= 0 0000111 B
负数:原码就是原来的表示方法、反码是除符号位(最高位)外取反、补码=反码+1
[-7]原= 1 0000111 B
[-7]反= 1 1111000 B
[-7]补= 1 1111001 B
当做加法时,只需将原码相加即可,例如7+4=11
[+7]原= 0 0000111 B
[+4]原= 0 0000100 B
-----------------------------------
0 0001011 B(11)
当做减法时,例如7-4=3,可以看成加上负数7+(-4),但是这里直接用原码计算是错误的,如下所示:
[+7] 原= 0 0000111 B
[-4] 原= 1 0000100 B
-----------------------------------
1 0001011 B(-11)
由于4-4=0在计算机里可以表示为
[+4] 原= 1 0000100 B
[-4] 补= 1 1111100 B
-----------------------------------
1 0 0000000 B(0) —— 这里1是溢出位
根据上述结论,如果将-4转换成补码,则可以使运算成立。
[+7] 原= 0 0000111 B
[-4] 补= 1 1111100 B
-----------------------------------
1 0 0000011 B(3)
这里可以联想为:7原+(-4)补=3原+4原+(-4)补=3原+0原=3原