计算机中的原码-反码-补码

计算机中二进制分为原码,补码,反码,运算及存储时都是按照补码进行的,可以将补码转回原码,再转十进制,就知道这个补码代表的十进制数是多少了。

在原码,反码,补码中,其中最高位为符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制表示。

如:

127的原码为0111 1111

-127的原码为1111 1111

其中

原码:二进制表示。二进制首位是符号位,0为正,1为负。

反码:正数,反码和原码一样;负数,符号位不变,其他各位取反。

补码:正数,补码和原码一样;负数,反码末位加1,有进位则进位,但不改变符号位(符号位不变很重要)。

例如,-7的补码:因为是负数,则符号位为“1”,整个为1000 0111;其余7位为-7的绝对值+7的原码

1000 0111按位取反为1111 1000;再加1,所以-7的补码是1111 1001。

补码转回原码的步骤为:

(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。

(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位不变,也就还是1,其余各位取反,然后再整个数加1。

例如:-7的补码是1111 1001 按位取反为1000 0110 再加1,所以-7的原码是1000 0111,和上面的例子对比是正确的。

得到原码后就可以按照如下的公式转换为十进制:

二进制转十进制(符号位不参与计算)

1.从左边第一位数乘以2的n-1次方(幂),n代表该数字从右到左数起的位数。加上从左边第二位数乘以2的n-2次方。

依此类推,一直到最后一个数。

例:-7的原码是1000 0111 对应的十进制是:1*2(3-1)次方+1*2(2-1)次方+1*2(1-1)次方=4+2+1=7 再加符号位则为 -7


分享到:


相關文章: