正数的反码、补码和原码相同
负数的原码先确定该负数绝对值的二进制表示,然后把最高位(符号位)设为 1
负数的反码对原码除符号位外,其余各位按位取反
负数的补码是反码 + 1
以 5 - 3 为例
假设以8位二进制来表示-3
原码 | 反码 | 补码 | |
-3 | 1000 0011 | 1111 1100 | 1111 1101 |
补码 1111 1101 + 3 = 1 0000 0000,进位1
补码 1111 1101 + 5 = 1 0000 0010 = 5 - 3
从过程看来,通过转成反码和补码来逼近进位
通过反码和补码来制造进位的空缺,计算中完成进位,舍弃进位,有效位数中表示的就是最终的计算结果
那么 -3 - 3呢
1111 1101 + 1111 1101 = 1 1111 1010 = 1111 1010
1010差6完成进位,负数和负数相加就是累计进位缺口的过程,当加入正数就是填补进位缺口