理解浮点数的基数与范围、精度的关系
前提:两种浮点数长度相同、格式相同,前者基数大、后者基数小。
基数与精度的关系
首先,把浮点数的基数理解为,阶码每变化一位,尾数小数点所需要移动的位数。
并且要知道,浮点数的精度是指相邻两个浮点数之间的最小差值。
在日常生活情况下,我们会把精度认为是小数位越多,精度就越高,然而浮点数的精度却不是这么理解的。
所以,当基数越大的时候,每次阶码变化一位,尾数小数点所移动的位数就越多,例如基数为2时,只需移动一位,基数为4时,需要移动两位,那么举个例子,从(0.5-0.25的差值)>(0.25-0.0625的差值),所以基数越大,数据的离散程度越大,其精度降低
基数与范围的关系
浮点数基数对比示例(β=2 vs β=4)
假设浮点格式(总长度8位):
- 符号位(1位):0正1负
- 阶码(3位):偏移码(偏移量=3),实际指数 $ E = \text{阶码值} - 3 $
- 尾数(4位):规范化为 $ 1 \leq M < \beta $
1. β=2(二进制)
- 阶码范围:$ E = -3 \sim 4 $
- 尾数范围:\(1.0000_2 \leq M < 1.1111_2\)(十进制:$ 1 \leq M < 1.9375 $)
- 数值范围:
- 最大正数:$ 1.9375 \times 2^4 \approx 31 $
- 最小正数:$ 1.0000_2 \times 2^{-3} = 0.125 $
- 精度(间隔):
- 1.0附近:相邻数间隔为 $ 0.0625 $(如
1.0和1.0625)。 - 最大值附近:间隔为 $ 1.0 $。
- 1.0附近:相邻数间隔为 $ 0.0625 $(如
2. β=4(四进制)
- 阶码范围:$ E = -3 \sim 4 $
- 尾数范围:\(1.0000_4 \leq M < 3.3333_4\)(十进制:$ 1 \leq M < 3.99609375 $)
- 数值范围:
- 最大正数:$ 3.99609375 \times 4^4 \approx 1023 $
- 最小正数:$ 1.0000_4 \times 4^{-3} = 0.015625 $
- 精度(间隔):
- 1.0附近:相邻数间隔为 $ 0.00390625 $(如
1.0和1.00390625)。 - 最大值附近:间隔仍为 $ 1.0 $。
- 1.0附近:相邻数间隔为 $ 0.00390625 $(如
对比表格
| 参数 | β=2(二进制) | β=4(四进制) |
|---|---|---|
| 最大正数 | ≈31 | ≈1023 |
| 最小正数 | 0.125 | 0.015625 |
| 1.0附近间隔 | 0.0625 | 0.00390625 |
| 最大值附近间隔 | 1.0 | 1.0 |
关键结论
- 范围扩展:基数越大,阶码缩放能力越强(β=4的最大值是β=2的33倍)。
- 精度分布:
- 基数增大时,小数区域精度更高(β=4在1.0附近的间隔更小)。
- 但在大数区域,两者的绝对间隔相同(均为1.0),但β=4的相对精度更差(因数值范围更大)。
posted on 2025-03-31 20:19 swj2529411658 阅读(414) 评论(0) 收藏 举报
浙公网安备 33010602011771号