首页 > 代码库 > 计算机中的原码,反码,补码与移码
计算机中的原码,反码,补码与移码
在计算机内,定点数有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
―――――――――――――――――――――――――――――――――――――――――――