在计算机系统中,正负数值,一律采用补码来表示和储存。
原码和反码,在计算机中,都是不存在的。
补码,就是一个【代替负数运算的正数】。
利用补码,减法就可以用加法运算代替了。
计算机中,只要配置一个加法器,就可以加、减通用了。
原码和反码,都没有这种功能,所以,计算机中不使用它们。
----------------------
正数,怎么就能代替负数呢?
且看 2 位 10 进制:
25 - 1 = 24
25 + 99 = (一百) 24
只要舍弃进位,+99 就能当做-1 使用。
+99 就称为-1 的补数。
计算公式: 补数 = 负数 + 10^n, n 是位数。
----------------------
计算机用二进制,补数,就改称为:补码。
8 位 2 进制的范围:0000 0000~1111 1111(十进制 255)。
求补码的计算公式:
负数的补码 = 负数 + 2^8 = 负数 + 256。
正数,不需任何变换,直接就可以进行计算。
所以,正数,并不存在补码。
-1 的补码是:-1 + 256 = 255 = 1111 1111。
-2 的补码是:-2 + 256 = 254 = 1111 1110。
。。。
-128 的补码是: 128 = 1000 0000。
----------------------
运算实例: 7 - 2 = 5,用补码计算如下:
7 = 0000 0111
-2 的补码 = 1111 1110
---相加-----------
得:(1) 0000 0101 = 5
舍弃进位,结果,就完全正确。
----------------------
补码,就是补码,与原码反码毫无关系。
从“取反加一”来学习补码,不但不能理解补码的意义,而且还难以求出-128 的补码。
为了解释-128 的补码,还得编造许多瞎话。