Appearance
题目
某数采用 IEEE754 单精度浮点数格式表示为 C6400000H,则该数的值是( )。
错因
B
阶码部分用了偏移量 128(错套 规则):阶码字段 E=10001100=140,真值 = 140−128 = 12,于是写出 。单精度浮点的偏移量是 127(,n=8),不是 128。尾数那块倒是处理对了——加上隐含的 1,得到 1.5。
C
阶码算对了 13,但忘记加上隐含的整数位 1:把尾数字段 100 0000... 直接当成 0.5(即认为浮点数是 )。IEEE 754 规格化数的真值是 ,那个"1."不写在尾数字段里,但参与计算。漏掉它,得到的有效值就少 1。
D
阶码偏移量错(同 B,用 128 得 12)+ 尾数漏隐含 1(同 C,得 0.5)。两个最经典的错点同时踩中——重做一遍标准流程"符号 → 阶码减偏移 → 1.M"即可避免。
总解析
第一步:把 C6400000H 拆成二进制 32 位
第二步:按 IEEE 754 单精度三段切分
| 字段 | 位区间 | 取值 |
|---|---|---|
| 符号 S | [31] | 1 |
| 阶码 E | [30:23] | 10001100 |
| 尾数 M | [22:0] | 10000000000000000000000 |
第三步:还原真值
- 符号:S=1 → 数为负
- 阶码真值 = E − 偏移量 =
- 尾数真值 = (隐含的 1 必须加回来)
合起来:
最终答案是 A()。
单精度三段速查:
| 项 | 长度 | 关键 |
|---|---|---|
| 符号 S | 1 位 | 0 正、1 负 |
| 阶码 E | 8 位 | 真值 = E − 127(不是 128) |
| 尾数 M | 23 位 | 真值 = 1.M(前面那个 1 是隐含的,必须加回) |