進位制轉換(二進位制、八進位制、十進位制、十六進位制)

在二進位制、八進位制、十進位制、十六進位制之間相互轉換數值。使用 BigInt 進行運算,即使位數很大的整數也能精確轉換,不會產生誤差。

進位制轉換工具是什麼?理解二進位制、八進位制、十進位制、十六進位制的關係

進位制轉換工具只需輸入二進位制、八進位制、十進位制、十六進位制中任意一種表示的數值,就能一次性顯示其餘三種進位制的對應表示。在程式設計、網路設定、電子電路等場景中,經常需要用不同進位制處理同一個數值,而手動換算隨著位數增加很容易出錯。本工具會先校驗輸入內容,然後立即顯示轉換結果,無需藉助計算機應用或紙質換算表。

進位制轉換的原理其實很簡單:任何進位制都是用「位權 × 各位數字」之和來表示同一個數值。十進位制的 255,用二進位制寫作 11111111,八進位制寫作 377,十六進位制寫作 FF,寫法雖然不同,但所表示的數量完全相同。本工具在計算時使用 BigInt(位數不受限制的整數型別)而非 JavaScript 的 Number 型別,因此即便是超過 2 的 53 次方的超大整數,也能精確轉換、不產生誤差。

進位制轉換工具的使用方法

  1. 選擇輸入數值的進位制 從下拉選單中選擇接下來要輸入的數值是用二進位制、八進位制、十進位制還是十六進位制書寫的。
  2. 輸入數值 只輸入所選進位制允許使用的字元。十六進位制還可以使用 A 到 F 的字母。
  3. 檢查是否包含非法字元 如果輸入內容中包含所選進位制不允許的字元,將顯示錯誤提示,請據此修改輸入內容。
  4. 檢視各進位制的轉換結果 無需任何按鈕操作,二進位制、八進位制、十進位制、十六進位制的表示會自動全部列出。
  5. 繼續轉換其他數值 更改輸入框中的數值或進位制後,結果會立即重新計算,可以連續檢視多個數值。

用好本工具的小技巧

  • 輸入十六進位制數值時,請不要新增 `0x` 等字首,只需輸入數字部分(例如:`FF`)。大小寫字母均可識別。
  • 本工具使用 BigInt 進行計算,因此即使是超過 2^53 的大整數(在 JavaScript 的 Number 型別下會產生誤差)也能精確轉換。
  • 可用於程式設計中常見的十六進位制顏色程式碼(例如:`#FF0000`),或在確認位運算結果時使用二進位制表示法。
  • 八進位制常用於類 Unix 系統的檔案許可權表示(例如:`755`)。將其與十進位制、二進位制對照檢視,能更容易理解許可權的含義。

進位制轉換工具的使用場景

程式設計學習與練習題檢算

在完成資訊科學課程或資格考試中出現的進位制轉換練習題後,可以立即驗證自己的計算結果是否正確。

確認位遮罩與顏色程式碼

將設計工具或 CSS 中使用的十六進位制顏色程式碼(例如 `#FF0000`)轉換為二進位制表示,確認位運算標誌中哪些位被設定。

網路地址、子網計算的前置準備

將 IP 地址或子網路遮罩轉換為二進位制表示,作為確認網路部分與主機部分邊界的前置準備工作。

確認 Unix 檔案許可權

將 `chmod 755` 這類八進位制許可權值轉換為二進位制,直觀地瞭解讀取、寫入、執行許可權的組合方式。

處理大整數系統的除錯

當日誌或記憶體傾印中以十六進位制顯示 64 位元整數等較大數值時,可無誤差地轉換為十進位制,直觀掌握實際數量。

進位制轉換相關術語表

二進位制(Binary)
僅用 0 和 1 兩種數字表示數值的記數法。計算機內部通常用電壓高低或開關的開/關來對應這兩種狀態。
八進位制(Octal)
使用 0~7 共 8 種數字表示數值的記數法。由於恰好對應二進位制的 3 位,早期計算機及類 Unix 系統的檔案許可權中常見其身影。
十進位制(Decimal)
使用 0~9 共 10 種數字,是我們日常生活中使用的記數法。本工具中十進位制既可作為輸入進位制,也可作為轉換後的輸出之一。
十六進位制(Hexadecimal)
使用 0~9 和 A~F 共 16 種字元表示數值的記數法。由於恰好對應二進位制的 4 位,常用於以人類易讀的形式表示記憶體地址、顏色程式碼等計算機內部數值。
基數(Radix)
某種記數法中一位數字所能表示的數字種類數量。二進位制的基數為 2,八進位制為 8,十進位制為 10,十六進位制為 16。
BigInt
JavaScript 中一種位數不受限制、可精確處理整數的資料型別。普通的 Number 型別在超過 2 的 53 次方時會產生誤差,而 BigInt 無論位數多大都能精確轉換。
位權
數值某一位對整體數值所貢獻的大小。例如十進位制的百位權重為 100,進位制轉換正是透過將各位數字乘以其位權後求和來實現的。
位遮罩
用於提取或修改特定位的二進位制模式。將十六進位制值或顏色程式碼轉換為二進位制表示後,能更容易看出哪些位被設定。

常見問題

它們都是表示數值時使用的不同"進位制"(基數)。十進位制使用 0~9 共 10 個數字,是我們日常最熟悉的表示法;二進位制只使用 0 和 1 兩種數字,是計算機內部處理所使用的表示法;八進位制使用 0~7;十六進位制使用 0~9 和 A~F,在電腦科學和電子工程領域被廣泛使用。

十六進位制的一位數恰好可以表示 4 個位元(相當於二進位制的 4 位),因此能夠以人類更容易閱讀的方式壓縮表示二進位制資料。它被廣泛用於記憶體地址、顏色程式碼(`#RRGGBB`)、字元編碼等需要處理計算機內部位序列的場合。

使用普通計算器或 JavaScript 的 Number 型別進行轉換時,超過 2 的 53 次方(約 900 萬億)的整數可能會產生誤差。本工具使用 BigInt(位數無限制的整數型別)進行計算,因此無論整數位數多大,都能精確轉換,不會產生誤差。

八進位制主要用於類 Unix 系統(Linux、macOS 等)的檔案許可權表示(例如:`chmod 755`)。每一位數字代表"讀取(4)、寫入(2)、執行(1)"許可權的組合,一位八進位制數字就能簡潔地表示所有者、所屬組、其他使用者各自的許可權。
工具君

閒話 ― 為什麼計算機採用二進位制執行

計算機之所以以二進位制(0 和 1)為基礎,是因為電子電路更容易穩定地區分"電壓高/低"或"開關開/關"這兩種狀態。相比之下,若要像十進位制那樣精確識別十個不同的電壓等級,電路會更容易受噪聲干擾、結構也更復雜。出於這種實用的工程考量,現代幾乎所有計算機都採用了二進位制。

十六進位制之所以在程式設計中備受青睞,源於一個數學上的巧合:二進位制的 4 位(0000~1111)恰好對應十六進位制的 1 位(0~F)。例如,1 位元組(8 位元)的資料用十六進位制恰好可以表示為 2 位(`00`~`FF`),把原本需要 8 位二進位制才能表達的資訊壓縮成了更易讀的長度。

八進位制的流行有其歷史原因:早期計算機(如 20 世紀 60 年代的 PDP-8)採用了 12 位、36 位等 3 的倍數的字長,當時八進位制與二進位制的對應關係更為方便。此後,隨著計算機逐漸統一採用 8 位、16 位、32 位(4 的倍數)等字長,十六進位制在實用性上超過了八進位制,如今已成為主流。不過,在 Unix 檔案許可權等場合,八進位制至今仍在使用。