解釋計算機體系結構中的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 規範的處理器設定為使用不同的舍入方法,則它們可能會對相同的計算產生略微不同的結果。