二进制正,负数的原码,反码,补码三者之间是什么关系
在计算机中,借助于补码,那么,负数和减法,都可以转化成加法来进行运算。
使用这种方法的目的,就是简化计算机的硬件。
在计算机中,只有补码,并没有原码和反码。
补码和负数,有一一对应的关系,可以直接转换,并不需要通过原码反码。
那么,“原码反码取反加一”这些,都是垃圾知识,都是无用的。
-------------------------
计算机中所能计算的位数,是固定的,如八位机、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,这就是本来的正数,不需要任何转换。
有人说“正数的原码反码补码,都相同”,其实,这是误导。
正数,其补码都不存在,更别说计算机中不存在的原码反码了。
所以,都相同,就是无稽之谈。
-------------------------
借助于补码,负数和减法,都可以转化成加法来进行运算。
那么,计算机的硬件,就可以简化了。
因此,计算机中,只有加法器,并没有减法器。
倒数第三行有误,应该是“-5的补码为1111 1011”,原文写为“原码”,系为笔误。