首先,整数的编码是先有最直观的非负数,然后再加上负数作为补充。补充负数的时候非负数的表达方法不能改变,这是很自然的。就如同硬件设计上都讲平稳退化一样。 其次,补码是完全的人为定义。正数的补码是其本身,这只是为了符合补码的设计原则: 任何两个补码直接二进制简单相加,即可得到正确运算结果并仍是补码 0不存在所谓“正0”和“负0”的二义性 符合惯例和直观感受
计算机可以通过补码,正确地运算二进制减法。 我们再来用 3+(-2) 来验证一下。正数 3 的补码仍然是 0000…0011,-2 的补码是 1111…1110,两者相加,最后得到了正确的结果 1 的二进制。 参考资料 《程序员的基础数学课》课外加餐 一
首先,整数的编码是先有最直观的非负数,然后再加上负数作为补充。补充负数的时候非负数的表达方法不能改变,这是很自然的。就如同硬件设计上都讲平稳退化一样。
其次,补码是完全的人为定义。正数的补码是其本身,这只是为了符合补码的设计原则: