Appearance
题目
-0.4375 的 IEEE 754 单精度浮点数表示为( )。
错因
B
阶码部分错位 1。BF60 0000H 解码:S=1、E=(真值 )、M = → 表示的值是 。常见诱因:把 规格化成 (以为只移 1 位)。其实从 到 应该把小数点右移 2 位(跳过一个 0、一个 1),到 。
C
阶码错(同 B)+ 尾数也错。BF70 0000H 解码:S=1、E=126(真值 -1)、M = → 表示的值是 。可能直接把 的有效位(去掉前导 0)当作尾数 ,但忘了规格化要"去掉隐含的 1"——保留的应该是 (取 的小数部分),而不是 。
D
阶码符号搞反,把"小数点右移"当成"左移"。C0E0 0000H 解码:S=1、E=(真值 )、M = → 表示的值是 。 一定对应负阶码,看到结果 +2 就该警觉数量级跑偏了 —— 凡是 的浮点数其规格化阶码必为负数。
总解析
第一步:把 |x| 转成二进制
(整数 0) (整数 1) (整数 1) (整数 1),余 0 → 终止
第二步:规格化为
把小数点向右移到第一个 1 后面——即移 2 位:
所以真值 (小数点右移了 2 位,原始阶码 )。
第三步:填入三段
| 字段 | 位数 | 值 |
|---|---|---|
| 符号位 S | 1 | (负数) |
| 阶码 E | 8 | 真值 |
| 尾数 M | 23 | 去掉隐含 1 → ,补零到 23 位: |
第四步:4 位一组拼成十六进制
| 位区间 | 31..28 | 27..24 | 23..20 | 19..16 | 15..12 | 11..8 | 7..4 | 3..0 |
|---|---|---|---|---|---|---|---|---|
| 二进制 | 1011 | 1110 | 1110 | 0000 | 0000 | 0000 | 0000 | 0000 |
| 十六 | B | E | E | 0 | 0 | 0 | 0 | 0 |
→ BEE0 0000H
最终答案是 A(BEE0 0000H)。
单精度三大易错点(再次强调):
- 偏移量是 127,不是 128
- 尾数 M 不含隐含的 1
- 移位方向:从 规格化到 ,小数点要向右移、阶码为负—— 必负阶码
速查口径:
- →
- →
- → ← 0.4375 落这里
- →