反码就是给出一组二进制数,把0换成1,1换成0,如:11001的反码是00110。正数的补码就是那个正数的本身,如11001的补码还是11001,负数的补码是先将该数取反,然后加1,如-11001的原码是111001,第一个1是表示负数,它的补码就是把第一个1后面的所有的数取反后加1,结果为100111。希望能明白!
计算机中,只有补码,并没有原码和反码。
借助于补码,负数和减法,都可以转化成加法来进行运算。
那么,计算机的硬件,就可以简化了。
因此,在计算机中,只有加法器,并没有减法器。
------------------------
补码是怎么回事? 这得从“补数”谈起。
计算机所能计算的位数,是固定的,如八位机、16 位。。。
位数限定之后,就可以用“补数”代替负数,用加法实现减法运算。
如限定两位十进制,-1,就可以用 +99 代替。
25 - 1 = 24
25 + 99 = (一百) 24
舍弃进位,只取两位,这两种算法功能就完全相同。
99,就是-1 的补数。 计算公式:补数 = 一百+负数。
一百,是两位十进制数的计数周期。
-------------------------
计算机用二进制,补数,就改称为:补码。
八位二进制:0000 0000 ~ 1111 1111 (十进制 255)。
计数周期是:2^8 = 256。
求负数补码的计算公式,也是: 周期 + 该负数。
-1 补码就是:256 + (-1) = 255 = 1111 1111(二进制)。
用不存在的“原码反码取反加一”来求,也是这个结果。
正数,不用转换。 也可以说,正数自身就是补码。
-------------------------
举例说明,如: 5 - 7 = -2。
用补码计算的过程如下:
5 的补码=0000 0101
-7的补码=1111 1001
--相加-------------
得 (1) 1111 1110 = -2 的补码
舍弃进位,只保留八位,这就实现了 5-7。