【Dognle】【计算机硬件】原码、反码、补码、移码

原码

将最高位用作符号位(0表示正数,1表示负数),其余各位代表数值本身的绝对值表示形式

 例如+1:00000001-1:1000 0001

再直接使用原码在计算时会有麻烦,十进制1-1相加得0,但是二进制原码相加

(0000 0001)2+(1000 0001)2=(10000010)2,结果得-2,所以,使用原码直接参数计算可能会出现错误的结果,故而原码的符号位不能直接参与计算,必须和其他位分开,这样会增加硬件的开销

反码

正数的反码与原码相同,负数的反码符号位为1,其余各位为该数绝对值的原码按位取反

例如-1:1111 1110,第一个“1”是符号位不变,后面的“111 1110”则是由原码“000 0001”取反得到,即“1”换成“0”,“0”换为“1”得到。

由于,(0000 0001)2+(1111 1110)2=(1111 1111)2,其中(1111 1111)2是负0,由于普通观念中,0不分正负,故反码的符号位可直接参与计算。

补码

正数的补码与原码形同,负数的补码是该数的反码加1,即补“1

-1:1111 1111是由1000 0001转换成反码11111110,再补“1

(1111 1110)2+(0000 0001)2=(0000 0000)2,直接使用补码进行计算的结果也是正确的,故而补码的符号位也可以直接参与计算

对于一个补码表示的数,要计算其原码,只要对它再次求补即可得到该数的原码

移码

移码是对补码的符号位取反得到的,只用于表示浮点数的阶码

例如-1:0111 1111

 

+1-18位二进制)为例:

 

原码

反码

补码

移码

正数

0000 0001

原码

原码

1000 0001

负数

1000 0001

1111 1110

1111 1111

0111 1111

可计算

特征

符号位(最高);

0正,1

正不变,

负非符号位取反

正不变,

反码并补1

补码符号位取反

 

 

你可能感兴趣的:(计算机,硬件,数据编码,软件工程)