浮点数的表示
:符号 :尾数 :基数,一般是隐含的 2 :指数
Tip
相同位数的定点数和浮点数,可表示的数据的数量一样多,因为可表示数据的数量由位数决定。
float 和 double 的格式
类型 | 符号 | 阶码 | 尾数 | 偏置值 |
---|---|---|---|---|
float | 1 位 | 8 位 | 23 位 | 127 |
double | 1 位 | 11 位 | 52 位 | 1023 |
Tip
float 和 double 尾数最高位隐藏一个 1,因而使浮点数的精度更高。
极端情况
阶码 | 尾数 | 含义 |
---|---|---|
全 0 | 全 0 | 正 0 / 负 0 |
全 0 | 非全 0 | 非规格化数,阶数为-126 阶,隐含的第一位变成 0 |
全 1 | 全 0 | 正无穷/负无穷 |
全 1 | 非全 0 | NaN,用于表示非法操作的结果(如 0 除以 0) |
舍入
- 向偶数舍入
- 向零舍入
- 向上舍入
- 向下舍入
浮点数的加减运算
- 对阶:低阶向高阶的阶码对齐
- 尾数加减
- 尾数规格化
- 舍入
- 溢出判断
Tip
IEEE 754 浮点数尾数都是大于 1,于是乘法运算的结果也大于 1,所以不需要左规。