定點數與浮點數的差異:表示方式、範圍與精度、運算器規模、溢位、用途比較
定點數是預先決定小數點的位置,以與整數相同的位元串與運算器處理小數的方式。電路小、功耗也低,因此用於 DSP、沒有浮點運算器的微控制器,以及 AI 推論的整數運算。浮點數以符號、指數與尾數表示數值,以指數移動小數點的位置,因此能以幾乎固定的相對精度處理範圍極廣的數值。運算器雖然較大,但不必在意位數對齊就能使用,因此成為通用計算與 AI 訓練的標準。
| 項目 | 定點數 | 浮點數 |
|---|---|---|
| 表示方式 | 將整數的位元串乘上預先決定的比例(2 的 −n 次方)來解讀。以 Q15 等表示 | 以符號、指數、尾數 3 部分表示為 (−1)^符號 × 1.尾數 × 2^(指數 − 偏移值)。由 IEEE 754 規定 |
| 可表示的範圍(例) | Q15(16 位元)為 −1 至 1 − 2⁻¹⁵ | 單精度(32 位元)約為 10⁻³⁸ 至 10³⁸。以非正規數可更接近 0 |
| 精度 | 間隔固定(絕對誤差固定)。值越小相對誤差越大 | 相對精度幾乎固定(單精度約 7 位數)。值越大間隔也越大 |
| 運算器 | 直接使用整數的加法器與乘法器 | 需要指數比較、尾數對齊、正規化、捨入的電路 |
| 電路規模與功耗 | 小。在相同位元寬度下遠少於浮點數 | 大。面積與能量常為相同位元寬度之整數運算器的數倍以上 |
| 溢位的處理 | 在 2 的補數中會繞回到另一端的值。以飽和運算或具有額外位元(保護位元)的累加器防止 | 超過可表示的最大值時成為 ±無限大。0 ÷ 0 等為 NaN |
| 比例調整 | 由程式設計師估算數值範圍,並設計各運算的移位與小數點位置 | 由指數自動調整,幾乎不需要在意 |
| 結果的再現性 | 容易得到逐位元相同的結果 | 加法的順序會使結果略有不同(結合律不成立) |
| 使用場合 | DSP、沒有浮點運算器的小型微控制器、FPGA 或 ASIC 的訊號處理、AI 推論的整數運算(INT8 等) | PC 與伺服器的通用計算、科學計算(倍精度)、圖形、AI 訓練(FP32、BF16、FP16、FP8) |
數值為具代表性的大致參考值,會因世代或產品而異。