浮点格式¶
浮点格式用于表示实数的有限子集。浮点格式的特性包括基数、精度和指数范围,每种浮点格式都能够表示一组不同的浮点数据。
所有的格式都能够作为数学格式,它们能够被用于表示标准规定的运算的操作数或结果。一些固定宽度的格式也能够被用于表示交换格式,它们能够被用于在不同实现之间交换浮点数据。
标准定义了五种基本格式:
- 三种二进制格式,编码长度分别为 32 位、64 位和 128 位。
- 两种十进制格式,编码长度分别为 64 位和 128 位。
标准等级¶
此处“标准”对应原文中的 “specification”。
第 1 级 | \( \{ -\infty, \ldots, 0, \ldots, +\infty \} \) | 扩展实数 |
多对一 ↓ | 舍入 | ↑ 投影到(除了 NaN) |
第 2 级 | \( \{ -\infty, \ldots, -0 \} \cup \{ +0, \ldots, +\infty \} \cup \mathbf{NaN} \) | 浮点数据,一个代数闭系统 |
一对多 ↓ | 表示标准 | ↑ 多对一 |
第 3 级 | \( (\mathrm{sign, exponent, significand} ) \cup \{ +\infty, -\infty \} \cup \mathbf{qNaN} \cup \mathbf{sNaN} \) | 浮点数据的表示 |
一对多 ↓ | 浮点数据表示的编码 | ↑ 多对一 |
第 4 级 | \( \mathbf{0111000 \ldots} \) | 二进制串 |
支撑起 IEEE 754 的底层数学结构是扩展实数集,即实数集加上正、负无穷大。给定一种格式,舍入操作将一个扩展实数映射到这种格式中包含的一个浮点数。一个浮点数据可以是有符号零、有限非零数、有符号无穷大或者 NaN,可以映射到一种格式中的一个或多个浮点数据表示。
一种格式中的一个浮点数据表示包含:
- 三元组 \( (\mathrm{sign, exponent, significand} ) \);基数为 \( b \) 时,三元组表示的数值为 \( (-1)^{\mathrm{sign}} \times b^{\mathrm{exponent}} \times \mathrm{significand} \)
- 正无穷大和负无穷大
- qNaN(静默 NaN)和 sNaN(信号 NaN)
一种编码将一个浮点数据表示映射到一个二进制串。编码可能会将一些浮点数据表示映射到多个二进制串。
浮点数据集合¶
一种格式能表示的有限浮点数由以下整数参数决定:
- \( b \):基数,2 或 10
- \( p \):尾数的位数(精度)
- \( \mathit{emax} \):最大的指数 \( e \)
-
\( \mathit{emin} \):最小的指数 \( e \)
对于所有格式,\( \mathit{emin} \) 都应当为 \( 1 - \mathit{emax} \)。