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