Appearance
题目
IEEE 754 单精度浮点格式表示的数中,最小的规格化正数是( )。
错因
B
把单精度偏移量记成 128。最小阶码字段 = 1,按 1 - 128 = -127 推。单精度的偏移量是 127(公式 ,单精度 n=8,偏移 = 127;不是 128)。这是 IEEE 754 题里最常见的错误。
C
把偏移当成 128 + 把"最小有效阶码字段"当成 0。0 阶码字段在 IEEE 754 里专门保留给非规格化数和零,不能用于规格化数。两个错叠加得到 -128。
D
记得"最小正数 = 2⁻¹⁴⁹",但题面问的是"最小规格化正数",不是"最小正数"。 是单精度最小非规格化正数(阶码字段 = 0,尾数 = 0...001,即 )。规格化和非规格化要分开。
总解析
单精度浮点数格式(32 位):
| 字段 | 位数 | 含义 |
|---|---|---|
| S | 1 | 符号位(0 = 正,1 = 负) |
| E | 8 | 阶码(带 127 偏移) |
| M | 23 | 尾数(隐含的 1 + 23 位小数) |
规格化数的取值规则:
| E 字段值 | 表示什么 | 真值阶码 |
|---|---|---|
| 0 | 非规格化数 / 零 | 1 - 127 = -126(特殊) |
| 1 ~ 254 | 规格化数 | E - 127(范围 -126 ~ +127) |
| 255 | ∞ / NaN | — |
规格化数的实际表示:
注意尾数前面有隐含的 1(这是规格化的定义),所以最小尾数 。
第一步:找最小阶码
规格化数要求 E ∈ [1, 254],最小有效 E = 1,对应真值阶码 = 1 - 127 = -126。
第二步:找最小尾数
正数最小 → 尾数取最小 → (尾数字段全 0),对应 。
第三步:组合
最终答案是 A()。
单精度浮点数全套范围速记:
| 类别 | 阶码字段 E | 尾数字段 M | 真值范围 |
|---|---|---|---|
| 最小非规格化正数 | 0 | 0...001 | |
| 最大非规格化正数 | 0 | 1...111 | |
| 最小规格化正数 | 1 | 0...000 | |
| 最大规格化正数 | 254 | 1...111 |
易错点速查:
- 单精度偏移 = 127(),不是 128
- 规格化要求 且 ,最小 E = 1
- "最小规格化正数" ≠ "最小正数"——后者是非规格化的
- 规格化数最小尾数 = 1.0(隐含的 1,加上尾数字段全 0)