为什么二进制正数与负数的补码相加得到就是他们十进制相加结果的二进制?好神奇
在计算机中,借助于补码,那么,负数和减法,都可以转化成加法来进行运算。
使用这种方法的目的,就是简化计算机的硬件。
在计算机中,只有补码,并没有原码和反码。
补码和负数,有一一对应的关系,可以直接转换,并不需要通过原码反码。
那么,“原码反码取反加一”这些,都是垃圾知识,都是无用的。
-------------------------
计算机中所能计算的位数,是固定的,如八位机、16、32、64 位机。
位数限定之后,减去某个数,就可以用加上其补数,来完成。
如在两位十进制中,减一,就可以用 +99 代替。
25 - 1 = 24
25 + 99 = (一百) 24
舍弃进位一百,只取两位,这两个算法,结果就是相同的。
一百,就是两位十进制的计数周期:10^2。
99,就是-1 的补数。 求解公式: 补数 = 周期+负数。
-------------------------
计算机用二进制,补数,就改称:补码。
八位二进制是 0000 0000 ~ 1111 1111(十进制255)。
其计数周期是:2^8 = 256。
那么,[-1]补 = 256-1 = 255 = 1111 1111(二进制)。
如用“原码反码取反加一”来做,也是这个结果。
求负数八位补码的通用计算公式: 补码 = 256 + 负数。
-------------------------
在八位补码中,用 128~255 代表 128 个负数-128~-1。
而 0~127,这就是本来的正数,不需要任何转换。
有人说“正数的原码反码补码,都相同”,其实,这是误导。
正数,其补码都不存在,更别说计算机中不存在的原码反码了。
-------------------------
借助于补码,负数和减法,都可以转化成加法来进行运算。
那么,计算机的硬件,就可以简化了。
因此,计算机只有加法器,并没有减法器。