二進位小數轉換器
將二進位小數轉換為十進位,或將十進位小數轉換為二進位,並提供逐步說明。
選擇轉換方向,輸入數值,即可立即取得結果並查看演算法說明。
二進位小數轉換器
將二進位小數轉換為十進位,或將十進位小數轉換為二進位,並提供逐步說明。
輸入二進位小數(僅含 0 和 1,並以小數點分隔),取得精確的十進位等值。
關於二進位小數轉換器
二進位小數透過使用二的負次方作為位值,將二進位整數延伸到非整數數量的表示範圍。就像十進位把小數點右側的位置依序表示為十分位 (10⁻¹)、百分位 (10⁻²)、千分位 (10⁻³) 等,二進位把相同位置表示為二分之一 (2⁻¹ = 0.5)、四分之一 (2⁻² = 0.25)、八分之一 (2⁻³ = 0.125)、十六分之一 (2⁻⁴ = 0.0625) 等。二進位點右側的每個位元都代表這些遞減的二的次方之一。
將二進位小數轉換為十進位相當直接。先在二進位點處分開數字。整數部分使用標準方法轉換:最右側位元是 2⁰,下一位是 2¹,依此向左遞增。小數部分則將二進位點後最左側位元乘以 2⁻¹,下一位乘以 2⁻²,之後每個位元依序乘以連續的負次方。加總所有貢獻即可得到精確的十進位值。例如,二進位 101.101 等於 (1×4) + (0×2) + (1×1) + (1×0.5) + (0×0.25) + (1×0.125) = 5 + 0.5 + 0.125 = 5.625。
將十進位小數轉換為二進位需要兩個獨立程序。整數部分透過反覆除以 2 並記錄餘數來轉換。小數部分透過反覆乘以 2 來轉換:將小數乘以 2,記錄結果的整數部分(0 或 1)作為下一個二進位數字,然後繼續處理剩餘的小數部分。重複直到小數變成零,或達到所需精度。以 5.625 為例:整數 5 = 101₂;小數 0.625 × 2 = 1.25 → 位元 1;0.25 × 2 = 0.5 → 位元 0;0.5 × 2 = 1.0 → 位元 1;小數歸零,因此結果是 101.101₂。
需要理解的關鍵點是,並非所有十進位小數都有有限的二進位表示。正如 1/3 無法寫成有限十進位,許多簡單的十進位小數——包括 0.1、0.2 和 0.3——需要無限多個二進位位元才能精確表示。這正是電腦中浮點捨入誤差的根源。本轉換器的精度設定會控制要計算多少個小數二進位位元;提高精度會得到更接近的近似值,但對於非終止小數可能永遠不會得到精確結果。
二進位小數在運算中被廣泛使用。IEEE 754 浮點算術標準將單精度與雙精度數字編碼為帶有隱含前導 1 位元和偏置指數的二進位小數。數位訊號處理器將音訊和影像資料表示為稱為 Q 格式數的定點二進位小數。理解十進位值如何映射到二進位小數,對於編寫底層程式碼、處理嵌入式系統或偵錯軟體中的數值精度問題都非常重要。
二進位小數轉換範例
這些常見轉換展示二進位轉十進位與十進位轉二進位的流程。
| 輸入 | 結果 | 備註 |
|---|---|---|
| 101.101(二進位) | 5.625(十進位) | 1×4 + 0×2 + 1×1 + 1×0.5 + 0×0.25 + 1×0.125 = 5.625。這是無需近似的乾淨轉換。 |
| 1010.1101(二進位) | 10.8125(十進位) | 1×8 + 0×4 + 1×2 + 0×1 + 1×0.5 + 1×0.25 + 0×0.125 + 1×0.0625 = 10.8125。 |
| 5.625(十進位) | 101.101(二進位) | 整數 5 = 101₂。小數:0.625×2=1.25→1,0.25×2=0.5→0,0.5×2=1.0→1。結果 101.101₂ 是精確的。 |
| 3.375(十進位) | 11.011(二進位) | 整數 3 = 11₂。小數:0.375×2=0.75→0,0.75×2=1.5→1,0.5×2=1.0→1。用 3 個小數位元即可精確表示。 |
如何使用二進位小數轉換器
- 選擇轉換方向:選擇「二進位 → 十進位」可將二進位小數轉為十進位數;選擇「十進位 → 二進位」則進行反向轉換。
- 在輸入欄位中輸入數值。二進位輸入只能使用 0 和 1,且只能有一個小數點(例如 101.101)。十進位輸入可輸入任何正數(例如 5.625)。
- 若將十進位轉換為二進位,請設定小數精度,以控制二進位點後要計算多少位元(預設 8)。
- 按一下「轉換」。結果會立即顯示,並清楚呈現對應的十進位或二進位值。
- 按一下「重設」清除所有欄位並開始新的轉換。
二進位小數轉換器常見問題
為什麼 0.1 不能用二進位精確表示?
因為十進位的 0.1 是 1/10,而 10 = 2 × 5。由於 5 不是 2 的次方,分數 1/10 需要無限多個二進位數字。這類似於 1/3 無法寫成有限十進位。電腦會在固定寬度的浮點暫存器中儲存接近的近似值,因此在許多程式語言中將 0.1 相加三次並不會得到精確的 0.3。
如何將十進位數的小數部分轉換為二進位?
使用反覆加倍法:將小數部分乘以 2,記錄整數部分(0 或 1)作為下一個二進位位元,然後繼續處理剩餘的小數部分。重複直到小數為零或已有足夠位元。對於 0.625:0.625×2=1.25 → 位元 1;0.25×2=0.5 → 位元 0;0.5×2=1.0 → 位元 1,完成。結果:.101₂。
定點與浮點二進位小數有什麼差異?
在定點表示中,二進位點位於預先決定的位置,因此整數位元和小數位元的數量固定。在浮點表示(例如 IEEE 754)中,二進位點會浮動:獨立的指數欄位會將有效數向左或向右移動,以非均勻精度為代價取得非常寬的動態範圍。定點較簡單且較快;浮點對科學計算更具彈性。
要匹配指定的十進位精度需要多少個二進位位元?
每增加一個二進位位元,大約會增加 log₁₀(2) ≈ 0.301 個十進位數字的精度。若要匹配 d 個十進位數字,大約需要 d / 0.301 ≈ 3.32 × d 個位元。例如,單精度 IEEE 754 使用 23 個小數位元,可提供約 7 個十進位有效數字。
轉換器可以處理純整數(沒有小數點)嗎?
可以。如果輸入 1011(二進位)或 11(十進位)這類整數,轉換器會將其視為小數部分為零的數並正常轉換。結果也不會包含小數部分。
將十進位轉換為二進位時,精度設定有什麼作用?
精度會設定二進位點後最多計算多少個位元。較高精度可為非終止二進位小數提供更接近的近似值。如果小數在達到精度上限前終止,轉換器會提前停止,結果就是精確的。支援的最高精度為 32 位元。