跳转至

浮点格式

浮点格式用于表示实数的有限子集。浮点格式的特性包括基数radix精度precision指数范围exponent range,每种浮点格式都能够表示一组不同的浮点数据。

所有的格式都能够作为数学格式arithmetic format,它们能够被用于表示标准规定的运算的操作数或结果。一些固定宽度的格式也能够被用于表示交换格式interchange format,它们能够被用于在不同实现之间交换浮点数据。

标准定义了五种基本格式

  • 三种二进制格式,编码长度分别为 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 的底层数学结构是扩展实数集,即实数集加上正、负无穷大。给定一种格式,舍入rounding操作将一个扩展实数映射到这种格式中包含的一个浮点数floating-point number。一个浮点数据floating-point datum可以是有符号零、有限非零数、有符号无穷大或者 NaNnot-a-number,可以映射到一种格式中的一个或多个浮点数据表示representation of floating-point data

一种格式中的一个浮点数据表示包含:

  • 三元组 \( (\mathrm{sign, exponent, significand} ) \);基数为 \( b \) 时,三元组表示的数值为 \( (-1)^{\mathrm{sign}} \times b^{\mathrm{exponent}} \times \mathrm{significand} \)
  • 正无穷大和负无穷大
  • qNaN(静默 NaN)和 sNaN(信号 NaN)

一种编码encoding将一个浮点数据表示映射到一个二进制串。编码可能会将一些浮点数据表示映射到多个二进制串。

浮点数据集合

一种格式能表示的有限浮点数由以下整数参数决定:

  • \( b \):基数,2 或 10
  • \( p \):尾数的位数(精度)
  • \( \mathit{emax} \):最大的指数 \( e \)
  • \( \mathit{emin} \):最小的指数 \( e \)

    对于所有格式,\( \mathit{emin} \) 都应当为 \( 1 - \mathit{emax} \)

评论