解释计算机体系结构中的IEEE 754浮点数?
IEEE 制定了 IEEE 754 浮点数标准。该标准定义了一组格式和操作模式。所有符合此标准的计算机都将始终为相同的计算计算出相同的结果。此标准未指定用于执行计算的算术程序和硬件。例如,CPU 无论是使用移位加法硬件还是 Wallace 树来相乘两个有效数字,都可以满足该标准。
IEEE 754 标准指定了浮点数的两种精度。单精度数有 32 位——1 位用于符号位,8 位用于指数,23 位用于尾数。尾数还包括在其基数点左侧隐含的 1。
表 (a) 显示了 +19.5 (=10011.1 或 1.00111 x 24 为二进制) 在单精度格式中的表示。前导 1 不包含在尾数中,其存在在此标准中是隐含的。由于增加了 127 的偏差,指数 4 表示为 1000 0011 或 131。
双精度数使用 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 | 100 0000 0011 |
0 | 0 | 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 | 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 规范的处理器设置为使用不同的舍入方法,则它们可能会对相同的计算产生略微不同的结果。