我们假设不使用补码在计算机的运算中会发生什么,以一个简单数学算式7-6=1来分析
1,使用原码
7 的二进制原码 :0 000 0111 其中最高一位表示符号位
-6的二进制原码 :1 000 0110
二者做相加运算
0 000 0111
+1 000 0110
1 000 1100
这个结果 符号位是1 表示是一个负数。明显结果有误
2,使用反码
7 的二进制反码:0 000 0111
-6的二进制反码 1 111 1001
二者做相加运算
0 000 0111
+1 111 1001
1 0 000 0000
计算产生了进位,最高位溢出,舍弃。结果就是 0 000 0000.这个结果也是不合理。和十进制的运算结果不一致。
但是我们发现如果在这个结果上再加上1,就是我们想要的结果了。这个问题是不是具有一般性? 再随便举个例子8-5=3
8的原码&#