首页 > 代码库 > 计算机中的原码,反码,补码与移码

计算机中的原码,反码,补码与移码

在计算机内,定点数有3种表示法:原码、反码和补码。

原码:就是二进制定点表示法,即最高位为符号位,0表示正,1表示负,其余位表示数值的大小

反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
       原码10010=反码11101(10010,1为符号位,故为负)

补码:正数的补码与原码相同,负数的补码是对其原码逐位取反,但符号位除外,然后整个数加1

如果补码的符号位为0,则表示一个正数,其原码就是补码
如果补码的符号位为1,则表示一个负数

移码:移码与补码的关系: [X]移与[X]补的关系是符号位互为相反数(仅符号位不同)

 

l  举例1:在计算机中,最适合进行数字加减法运算的数字编码是(C),最适合表示浮点数阶码的数字编码是(D).

A.原码   B.反码 C.补码 D.移码

解析:在计算机的CPU中,通常只设置硬件加法器.只有补码能够将减法转化成加法,故用硬件加法器可以转方便地进行数字加减法.

由于正数的移码大于负数的移码,利用这一特点,移码被广泛用来表示浮点数阶码的数字编码,这可以用比较阶码的大小来实现真值大小的比较.

l  举例2:若计算机采用8位整数补码表示数据,则( C) 运算将产生溢出。

A -127+1           B -127-1           C 127+1           D 127-1 

解析:8位补码表示范围为-128~+127 ,所以肯定该选C

 

8位二进制原码的表示范围:-127~+127
8位二进制反码的表示范围:-127~+127
8位二进制补码的表示范围:-128~+127
8位二进制移码的表示范围:-128~+127

 

请参照此下表

   二进制数码   | 无符号数   原码    反码    补码    移码
―――――――――――+―――――――――――――――――――――――――――――――
 0000 0000 |   0    +0    +0     0   -128
 0000 0001 |   1    +1    +1    +1   -127
 0000 0010 |   2    +2    +2    +2   -126
  ……   ……   |  ……    ……    ……    ……     ……
 0111 1100 | 124  +124  +124  +124     -4
 0111 1101 | 125  +125  +125  +125     -3
 0111 1110 | 126  +126  +126  +126     -2
 0111 1111 | 127  +127  +127  +127     -1
 1000 0000 | 128    -0  -127  -128      0
 1000 0001 | 129    -1  -126  -127     +1
 1000 0010 | 130    -2  -125  -126     +2
  ……   ……   |  ……    ……    ……    ……     ……
 1111 1100 | 252  -124    -3    -4   +124
 1111 1101 | 253  -125    -2    -3   +125
 1111 1110 | 254  -126    -1    -2   +126
 1111 1111 | 255  -127    -0    -1   +127
―――――――――――――――――――――――――――――――――――――――――――