解释一下计算机体系结构中的 IEEE 标准 754 浮点数?
IEEE 制定了 IEEE 754 浮点标准。该标准定义了一系列格式和操作模式。所有符合该标准的计算机对于相同的计算都会得出相同的结果。该标准并未指定用于执行计算的算术程序和硬件。例如,无论 CPU 使用移位加法硬件还是使用华莱士树进行两位有效数字相乘,它都可以满足该标准。
IEEE 754 标准为浮点数指定了两种精度。单精度数的符号位为 32 位(-1),指数位为 8 位,有效数字为 23 位。有效数字的小数点左侧也隐含一个 1。
表 (a) 显示了 +19.5(二进制 = 10011.1 或 1.00111 x 24)的单精度格式表示。有效数字中不包含前导 1,在本标准中,它的存在是隐含的。指数 4 表示为 1000 0011 或 131,这是由于添加了 127 的偏差。
双精度数使用 64 位 -1 作为符号位,11 位作为指数位,52 位作为有效数字。与单精度数一样,大多数值的有效数字都隐含一个前导 1。指数的偏差为 1023,范围为 -1022 到 +1023。最小和最大指数值 -1023 和 +1024 保留用于特殊数字。表 (b) 显示了双精度格式的 +19.5 的表示。对于此值,指数存储为 4 + 偏差,即 4 + 1023 = 1027。
IEEE 754 标准格式的单精度 (a) 和双精度 (b) 表示
| 值 | 符号 | 尾数 | 指数 |
|---|---|---|---|
| +19.5 | 0 | 001 1100 0000 0000 0000 0000 | 1000 0011 |
| 0 | 0 | 000 0000 0000 0000 0000 0000 | 0000 0000 |
| ±∞ | 0 或 1 | 000 0000 0000 0000 0000 0000 | 1111 1111 |
| Nan | 0 或 1 | 任何非零值 | 1111 1111 |
| 非规范化 | 0 或 1 | 任何非零值 | 0000 0000 |
(a)
| 值 | 符号 | 尾数 | 指数 |
|---|---|---|---|
| +19.5 | 0 | 0011 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 | 100 0000 0011 |
| 0 | 0 | 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 | 000 0000 0000 |
| ±∞ | 0 或 1 | 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 | 111 1111 1111 |
| Nan | 0 或 1 | 任何非零值 | 111 1111 1111 |
| 非规范化 | 0 或 1 | 任何非零值 | 000 0000 0000 |
零、±∞ 和 Nan 在单精度和双精度格式中都有预定义的表示形式。值 0 的有效数字等于 0,指数所有位都设置为 0。无穷大的有效数字也等于 0,但其指数所有位都设置为 1。符号位表示值为±∞ 或±∞。如果指数全为 1,且尾数不为零,则表示值为 Nan。
IEEE 754 标准要求向最接近数舍入为默认舍入方法,并且其他方法可供用户选择。因此,如果两个符合 IEEE 754 规范的处理器设置为使用不同的舍入方法,则它们在执行同一计算时可能会产生略有不同的结果。

