若字长n为8时,那么45的二进制表示0 0101101 ,若数值X
1.原码 [X]原,在二进制数值中,正数保持不变,负数符号位置1.
2.反码 [X]反,的正数保持不变 , 负数对数值的绝对值每一位按位求反
3.补码 [X]补,的正数不变,负数在反码末位加1
4.移码 [X]移, 在偏移2^(n-1)情况下,在补码的基础上首位取反 。在偏移 N 的情况下 移码=真值 + 偏移量
例如:其中 ♦ 代表小数点位置
+1 = 0 0000001(原) = 0 0000001(反) = 0 0000001(补) = 1 0000001(移)
-1 = 1 0000001(原) = 1 1111110(反) = 1 1111111(补) = 0 1111111(移)
+45 =0 0101101(原) =0 0101101(反) =0 0101101(补) =1 0101101(移)
-45 = 1 0101101(原) =1 1010010(反) =1 1010011(补) =0 1010011(移)
+127 =0 1111111(原) =0 1111111(反) =0 1111111(补) =1 1111111(移)
-127 =1 1111111(原) =1 0000000(反) =1 0000001(补) =0 0000001(移)
+0.5 =0♦1000000(原)=0♦1000000(反) =0♦1000000(补)
-0.5 =1♦1000000(原)=1♦0111111(反) =1♦1000000(补)
浮点数 的IEEE 754表示:
在十进制中,83.125 可以写成 10^3 × 0.083125 也可以写成 01010011.001 及 2^6 ×1.010011 .在N = 2^E × F 形式中, E称之为 阶码 ,F 称为 尾数。 工业 IEEE 754 表示格式为
(-1) ^S 2^E (b0 b1 b2 b3 .... ) ,其中(-1) ^S 表示数符, S为0为正数,1 为负数
参数 | 单精度 | 双精度 |
字长 | 32 (4字节) | 64 (8字节) |
尾数长度 | 23 | 52 |
指数长度 | 8 | 11 |
指数偏移量 | +127 | +1023 |
可表示的数值范围 | 10^-38 ~10^38 | 10^-308 ~10^308 |
在 IEEE 754 表示中 ,阶码 = 指数 + 偏移量 ,尾数表示成 b0 b1 b2 b3 ......其中b0为1,表示时省略。
对于 单精度的 83.125 ,表示成 2^6 ×1.010011 , 指数为6 , 单精度的偏移量为 127(即2^7 -1)所以,阶码为 6+127 =133 =( 10000101) 尾数 为1♦01001100000000000000000 ,把小数点省去得到 IEEE754表示法中的 83.125 表示 为:
0 10000101 01001100000000000000000
对于 单精度 176.0625 的IEEE 754 表示:
1)首先转成二进制
2)规格化处理
10110000.0001 = 1♦01100000001 × 2^7
3)阶码
指数为7,单精度的偏移量127,所以阶码 在 指数7上加127, E=7+127 = 134 ,阶码即为指数的阶码: 10000110 .
最后,可得到 0 10000110 01100000001000000000000
4)浮点数间的加减法
首先需要"对阶",即加减法时的两个数的阶码化成一致,阶码小的化成于阶码大的一致,然后再尾数二进制加减
例如 0.5 + (-0.4375) = 1♦000 × 2^(-1) + -1♦110 × 2^(-2)
= 1♦000 × 2^(-1) + -0♦111 × 2^(-1)
=0♦001 × 2^(-1) = 1♦000 × 2^(-4)