浮点数的分类与舍入
IEEE 754 根据指数位(exp)和小数位(frac)的不同组合,将浮点数分为三类。
三类浮点数
1. 规格化数(Normalized Numbers)
条件:exp 不全为0且不全为1
这是最常见的浮点数形式。尾数的计算公式为:
其中 是 frac 部分的各位(高位开始)。这里的 隐含1(leading 1)是规格化数的关键特征——尾数部分实际有 位精度,但只显式存储了小数部分。
2. 非规格化数(Denormalized Numbers)
条件:exp 全为0
非规格化数用于表示0和非常接近0的数。
尾数公式:
指数固定为:
重要特性:
- 可以表示0(frac 全为0时, 和 分别由符号位决定)
- 表示非常接近0的数,填补了规格化数最小正值到0之间的间隙
- 非规格化数的间距是均匀的,而规格化数的间距随指数增大而增大
3. 特殊值(Special Values)
条件:exp 全为1
- 无穷大(Infinity):exp 全1, frac 全0
- (s=0)和 (s=1)
- 在溢出或除以0时产生
- NaN(Not a Number):exp 全1, frac 不全0
- 表示无效运算的结果(如 , , )
- NaN的frac部分可以承载诊断信息(quiet NaN vs signaling NaN)
数值分布特点
浮点数在数轴上的分布并不均匀:
- 接近0的区域密度高(非规格化数和小的规格化数间距小)
- 远离0的区域密度低(大的规格化数间距大)
这反映了浮点数的精度特点——相对精度大致恒定,但绝对精度随数值大小变化。
舍入方式
IEEE 754 定义了四种舍入模式:
| 模式 | 说明 |
|---|---|
| 向偶舍入(Round-to-Even) | 默认模式,也是最常用的。舍入到最接近的值,恰好在中点时间向使最低有效位为偶数的方向舍入 |
| 向零舍入 | 直接截断多余位数 |
| 向下舍入(向 ) | 向更小的方向舍入 |
| 向上舍入(向 ) | 向更大的方向舍入 |
向偶舍入的必要性
如果不采用向偶舍入而采用简单的”四舍五入”或者”向上舍入”,会引入统计上的偏差。向偶舍入在50%的情况下向上、50%的情况下向下,长期统计不会产生系统性偏差。
相关笔记
链接到
- 上一个知识点:2.10 浮点数IEEE标准
- 下一个知识点:2.12 浮点数精度与转化