在不同進位制之間轉換,意思就是把同一個整數改用另一種數字系統來表示——數字會改變,但數值保持不變。實際操作上,你把以某個進位制寫成的數字(例如二進位的 1010)讀進來,再用目標進位制所允許的數字寫出同樣的數值(例如十進位的 10)。要在 2 到 36 之間的任何進位制之間快速完成這件事,最快的方法就是使用 Number Base Converter:輸入數值,選擇「來源進位」和「目標進位」,結果會立即顯示,並同時列出二進位、八進位、十進位和十六進位這四種常用進位制的表示,全程不需往返伺服器。你輸入的每一個數字都會根據所選的來源進位進行驗證,字母大小寫不分,前置的負號也會保留,而且由於計算使用 BigInt 算術而非固定大小的整數,任意大的整數都能精準轉換。所有轉換都在你的瀏覽器中完成,數字不會離開你的裝置。

how to convert between number bases
how to convert between number bases

「在不同進位制之間轉換」到底是什麼意思

進位制(或稱基數)同時代表兩件事:一個數字系統使用多少個不同的數字符號,以及寫成的數字中每一個位置的權重是多少。十進位(base 10)使用 0 到 9 的數字,每一個位置代表十的冪次,因此十進位的 255 表示 2×100 + 5×10 + 5×1。二進位(base 2)只使用 0 和 1,位置的權重依序為 1、2、4、8、16 等等。八進位(base 8)使用 0–7 的數字,十六進位(base 16)則使用 0–9 再加上 A–F 來表示十到十五。超過十之後,各進位制會繼續借用字母,一路借到 base 36,使用 0–9 加上 A–Z。

同一個整數可以在所有這些進位制中表示出來,儘管數值完全相同,看起來的數字卻截然不同。下表把數值 255 並列展示在四種常用進位制中的表示方式。

進位制名稱使用的數字同一數值(十進位的 255)
2二進位0, 111111111
8八進位0–7377
10十進位0–9255
16十六進位0–9, A–FFF

轉換工具的工作就是把表中某一列的表示,轉換成另一列的表示,方向任意。

如何使用本工具在不同進位制之間轉換

對於任何整數以及 base 2 到 base 36 之間的任何來源/目標配對,操作步驟都一樣:

  1. 把你想轉換的整數完整輸入到數值欄位中。字母大小寫不分(FF 和 ff 會被視為相同),如果需要表示負整數,也可以加上前置的負號。
  2. 選擇「來源進位」,使其對應到你輸入所使用的進位制(例如 1010 這類輸入選二進位,FF 這類輸入選十六進位,以此類推),然後挑選「目標進位」,作為你希望得到的結果所使用的進位制。
  3. 立即讀取轉換後的結果。本工具也會同時把該數值以二進位、八進位、十進位和十六進位這四種常用進位制一併顯示,因此你不必再跑第二次轉換。

如果你輸入了一個在所選「來源進位」中不合法的數字——例如二進位中出現 2,或是十六進位中出現字母 G——轉換器會明確標示出有問題的字元,而不是默默地回傳錯誤的答案;後者正是許多較差工具常見的失敗模式。

如果你的任務是專門把數字改寫成十進位,那麼我們專門寫的指南 how to change a number to base 10 會以十進位為目標,帶你逐步使用同一個工具。

手動轉換的原理

理解兩種經典方法,會讓你更容易信任任何自動轉換器。第一種方法叫做位值展開法,可以把任何進位制轉成十進位,公式如下:

數值 = d₀ × base⁰ + d₁ × base¹ + d₂ × base² + ...

以二進位的 1010 為例,最右邊的數字代表 1 的位置,再往左依序是 2、4、8 等位置。把數字和位置代入:

(1 × 8) + (0 × 4) + (1 × 2) + (0 × 1) = 8 + 0 + 2 + 0 = 10

所以二進位的 1010 等於十進位的 10。

第二種方法叫做除法收集法,可以把十進位整數轉成任何其他進位制。反覆把十進位數值除以目標進位,記錄每次的餘數,再從下往上讀出所有餘數。例如把十進位的 10 轉成二進位:10 ÷ 2 = 5 餘 0;5 ÷ 2 = 2 餘 1;2 ÷ 2 = 1 餘 0;1 ÷ 2 = 0 餘 1。從下往上讀就得到 1010。當數字超過寥寥幾位時,這兩種方法手動做起來都很煩人,也很容易出錯,而這正是轉換器能夠吸收的工作量。

在不同進位制之間轉換實際會出現在哪裡

這些轉換並非抽象的練習——在運算的許多實際領域中,它都是日常任務。

領域使用的進位制例子
電腦硬體二進位(base 2)一個位元不是關(0)就是開(1)
低階程式設計十六進位(base 16)位元組值、記憶體位址、雜湊摘要
網頁/CSS 色彩十六進位#FF8800 代表紅色 255、綠色 136、藍色 0
網路十六進位MAC 位址,例如 00:1A:2B:3C:4D:5E
Unix 檔案權限八進位(base 8)chmod 755 為擁有者設定讀取/寫入/執行權限

由於每一個十六進位數字剛好對應四個二進位位元,十六進位就成了二進位的一種簡潔速記,既能讓人閱讀,也能讓人輸入。這就是為什麼程式設計師只要需要在這些表示法之間轉換,就會伸手拿起轉換器。

Number Base Converter 做對了哪些事

有幾個設計選擇,能讓一個嚴謹、精準的轉換器有別於天真的版本:

  • 嚴格的數字驗證。你輸入的每一個字元都會根據所選「來源進位」所允許的數字進行檢查。二進位只接受 0 和 1,十六進位只接受 0–9 和 A–F,base 5 只接受 0–4,以此類推。無效字元會產生明確的錯誤訊息,而不是悄悄回傳錯誤的數字。
  • 字母大小寫不分。FF、ff 和 Ff 是相同的十六進位數值,這條規則同樣適用於任何大於十、會使用字母的進位制。
  • 前置負號。可以接受負整數,並在轉換過程中保留其正負號。
  • 任意精度算術。本工具使用 BigInt 而非固定大小的整數,因此非常大的數字也能精準轉換,不會有捨位錯誤,也不會溢位。
  • 同時顯示四種常用進位制。除了你所選「目標進位」的答案之外,介面上也會並列顯示二進位、八進位、十進位和十六進位,這通常才是你真正需要的資訊。
  • 完全在用戶端執行。不會上傳任何資料,因此私密或敏感的整數都會留在你的裝置上。

對於上述任何情況——包括最高達 36 的任意進位制以及非常大的整數——Number Base Converter 都會在你輸入完成的瞬間立即處理轉換。

需要留意的限制

開始之前,有兩個限制值得先了解。

  • 僅支援整數。本轉換器聚焦於整數,無法處理分數或小數點。小數值的進位制轉換是另一個更為複雜的運算。
  • 進位制範圍為 2 到 36。此範圍內的任何進位制都支援。更高的進位制則不支援,因為在 0–9 加上 A–Z 之外,並無一致的數字符號可用。

在這些限制之內,每次轉換都是精準且即時的。

想深入了解,請參閱 How to Convert Number Bases Using an Online Calculator