正数(整数、小数)的原码,反码,补码相同
负数(整数、小数)原码符号位为1,其余位表示数值的绝对值。
负数(整数、小数)反码符号位为1,其余位取反。
①负数(整数、小数)的补码为其反码加1(原码→反码→加一)
②负数(整数、小数)补码,原码符号位不变,从最低位开始,直到遇见第一个1为止,不变,保留这个1,后面按位取反。
原码
数X的原码记为[X]原
X为纯整数时
0 ≤ X ≤ 2^(n-1)时,[X]原 = X
-2^(n-1) ≤ X ≤ 0时,[X]原 = 2^(n-1) + |X|
X为纯小数时
0 ≤ X <1时,[X]原 = X
-1 <X ≤ 0时,[X]原 = 2^0 + |X|
n位机器数的最高位是符号位,0为正,1为负,剩下n-1位表示数值的绝对值。
例
(+10)D=[0000 1010]原
(-10)D=[1000 1010]原
(+0.5)D=[0.100 0000]原
(-0.5)D=[1.100 0000]原
零的原码有两种形式
[+0]原=0000 0000,[-0]原=1000 0000。
真值和原码之间的对应关系简单,乘除简单,加减复杂。
反码
数X的反码记为[X]反
0 ≤ X ≤ 2^(n-1)时,[X]反 = X
-2^(n-1) ≤ X ≤ 0时,[X]反 = 2^n - 1 + X
X为纯小数时
0 ≤ X <1时,[X]反 = X
-1 <X ≤ 0时,[X]反 = 2 - 2^(-(n-1)) + X
正数反码就是其本身
负数反码,符号位不变,其他位取反(整数符号位为最高位;纯小数符号位为小数点前一位,符号位占一位)
例
(+10)D=[0000 1010]反
(-10)D=[1111 0101]反
(+0.5)D=[0.100 0000]反
(-0.5)D=[1.011 1111]反
[+0]反=0000 0000,[-0]反=1111 1111。
补码
数X的补码记为[X]补
0 ≤ X ≤ 2^(n-1)时,[X]补 = X
-2^(n-1) ≤ X ≤ 0时,[X]补 = 2^n + X
X为纯小数时
0 ≤ X <1时,[X]补 = X
-1 <X ≤ 0时,[X]补 = 2 + X
补码最高位为符号位,0为正,1为负,正数补码同原码相同;负数的补码为原码符号位不变,其余位取反加一。
移码
移码表示法是在数X上增加一个偏移量来定义的用于表示浮点数中的阶码。如果机器字长为n,规定偏移量为2^(n-1)
偏移2^(n-1)的情况下,只要将补码的符号位取反便可获得相应的移码表示。