移码的定义
移码=真值+偏置值(使用补码计算)
一般情况下8位移码偏置值为2n-1
十进制(原码) | 原码 | 反码 | 补码 | 移码 |
---|---|---|---|---|
-0(-128) | 1000 0000 | 1111 1111 | 1000 0000 | 0000 0000 |
-2^7-1 | 1111 1111 | 1000 0000 | 1000 0001 | 0000 0001 |
-2^7-2 | 1111 1110 | 1000 0001 | 1000 0010 | 0000 0002 |
-2 | 1000 0010 | 1111 1101 | 1111 1110 | 0111 1110 |
-1 | 1000 0001 | 1111 1110 | 1111 1111 | 0111 1111 |
+0 | 0000 0000 | 0000 0000 | 0000 0000 | 1000 0000 |
1 | 0000 0001 | 0000 0001 | 0000 0001 | 1000 0001 |
2 | 0000 0010 | 0000 0010 | 0000 0010 | 1000 0010 |
2^7-2 | 0111 1110 | 0111 1110 | 0111 1110 | 1111 1110 |
2^7-1 | 0111 1111 | 0111 1111 | 0111 1111 | 1111 1111 |
IEEE 754
该定义的偏置值为:2n-1-1
即为:0111 1111 B
真值=-128
移码=1000 0000 + 0111 1111 = 1111 1111
真值=-127
移码=1000 0001 + 0111 1111 = 0000 0000
十进制(原码) | 补码 | 移码 |
---|---|---|
-0(-128) | 1000 0000 | 1111 1111 |
-2^7-1 | 1000 0001 | 0000 0000 |
-2^7-2 | 1000 0010 | 0000 0001 |
-2 | 1111 1110 | 0111 1101 |
-1 | 1111 1111 | 0111 1110 |
+0 | 0000 0000 | 0111 1111 |
1 | 0000 0001 | 1000 0000 |
2 | 0000 0010 | 1000 0001 |
2^7-2 | 0111 1110 | 1111 1101 |
2^7-1 | 0111 1111 | 1111 1110 |
IEEE 754如下表示
数符 | 阶码部分,使用移码表示(阶码全1或全0特殊用途) | 尾数部分,用原码表示(隐藏最高位为1) |
---|---|---|
Ms | E | M(1.M) |
类型 | 数符 | 阶码 | 尾数 | 总位数 | 16位偏置 | 10位偏置 |
---|---|---|---|---|---|---|
float | 1 | 8 | 23 | 32 | 7FH | 127 |
double | 1 | 11 | 52 | 64 | 3FFH | 1023 |
long double | 1 | 15 | 64 | 80 | 3FFFH | 16383 |
阶码范围为-2n+2~2n-1
阶码真值=阶码-偏置值
float值为=符号x1.Mx2E-127
Ex:
将-0.75使用IEEE 754 float表示
数符 1 尾数为1.1 阶码为-1
1111 1111 + 0111 1111 = 0111 1110
1011 1111 0010 0000 0000 0000 0000 0000