原码、反码、补码,是机器数。
计算机内部的硬件电路较易实现用1(高电平)、0(低电平)表示数据的正、负,通常这个符号放在二进制数的最高位,称符号位。符号位与数值位共同参预运算。
机器数的记忆及运算,利于计算机硬件逻辑电路的设计与制造。
想想你小时候,刚学会数数。
一般,数到一百,大人就不让你往下数了,而是从头开始数。
这就是说,你只会 0~99,循环周期是一百。
你会加法,但是,还不会做减法。
在这时,你想要-1,就可以用 +99 代替。
25 - 1 = 24
25 + 99 = (一百) 24
忽略你所不会的一百,结果就是相同的。
以上这些,就是补码的理论基础。
99,就称为-1 的补数。
补数,就是“代替负数的正数”。
借助于补数,就可以用加法,代替减法运算。
在计算机中,使用了补码,就可以使用加法器,作减法运算。
简化硬件,就是使用补码的目的。
计算机所能计算的数字的位数,是固定的。
八位机就是计算 8 位数。
八位二进制,共有:0000 0000~1111 1111(十进制255)。
循环周期是:2^8 = 256。那么,
-1 的补码就是:256-1 = 255 = 1111 1111(二进制)。
-2 的补码:254 = 1111 1110。
。。。
-128 的补码是:128 = 1000 0000。
以上就是,正负数值,存在计算机中内容,称为:补码。
---------------------
原码和反码,都没有“加法代替减法”的计算功能。
所以,在计算机中,并不使用原码和反码。
在计算机中,它们,都是不存在的。
它们,只是某些专家编造出来,蒙混学生而已。
反码是个过渡原码和补码的东西,其实就是按位的NOT
补码是用来做减法运算的
我好像听说做加法的电路比做减法的电路速度快很多(我也记不清了,好像是这样),所以CPU是用加上补码来做减法的
原码和反码,只是在纸面上写写而已了,并没有用处。
补码,才是在计算机中使用的代码。
因为用原码无法表示负数啊