進位制轉換(二進位制、八進位制、十進位制、十六進位制)
在二進位制、八進位制、十進位制、十六進位制之間相互轉換數值。使用 BigInt 進行運算,即使位數很大的整數也能精確轉換,不會產生誤差。
進位制轉換工具是什麼?理解二進位制、八進位制、十進位制、十六進位制的關係
進位制轉換工具只需輸入二進位制、八進位制、十進位制、十六進位制中任意一種表示的數值,就能一次性顯示其餘三種進位制的對應表示。在程式設計、網路設定、電子電路等場景中,經常需要用不同進位制處理同一個數值,而手動換算隨著位數增加很容易出錯。本工具會先校驗輸入內容,然後立即顯示轉換結果,無需藉助計算機應用或紙質換算表。
進位制轉換的原理其實很簡單:任何進位制都是用「位權 × 各位數字」之和來表示同一個數值。十進位制的 255,用二進位制寫作 11111111,八進位制寫作 377,十六進位制寫作 FF,寫法雖然不同,但所表示的數量完全相同。本工具在計算時使用 BigInt(位數不受限制的整數型別)而非 JavaScript 的 Number 型別,因此即便是超過 2 的 53 次方的超大整數,也能精確轉換、不產生誤差。
進位制轉換工具的使用方法
- 選擇輸入數值的進位制 從下拉選單中選擇接下來要輸入的數值是用二進位制、八進位制、十進位制還是十六進位制書寫的。
- 輸入數值 只輸入所選進位制允許使用的字元。十六進位制還可以使用 A 到 F 的字母。
- 檢查是否包含非法字元 如果輸入內容中包含所選進位制不允許的字元,將顯示錯誤提示,請據此修改輸入內容。
- 檢視各進位制的轉換結果 無需任何按鈕操作,二進位制、八進位制、十進位制、十六進位制的表示會自動全部列出。
- 繼續轉換其他數值 更改輸入框中的數值或進位制後,結果會立即重新計算,可以連續檢視多個數值。
用好本工具的小技巧
- 輸入十六進位制數值時,請不要新增 `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 和 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 檔案許可權等場合,八進位制至今仍在使用。