進位轉換計算機
將整數轉換為二進位、八進位、十進位和十六進位。
如何使用此進位轉換計算器
- 輸入整數
在「整數」欄位中輸入一個非負整數(例如 255 或 4096)。
- 讀取二進位值
二進位數值結果顯示了以 2 為底的表示法。
- 檢查八進位與十六進位
查看八進位與十六進位結果以獲取精簡的表示形式。
- 驗證十進位
十進位輸出可用於確認原始數值以進行交叉核對。
此進位轉換計算機的運作原理
此進位轉換計算機將十進位(基數 10)整數轉換為二進位(基數 2)、八進位(基數 8)和十六進位(基數 16)— 這是計算機科學中最常用的四種進位系統。每個位值系統的運作方式都相同:每個數位位置代表基數的連續冪次,而數值則是每個數位乘以其位置權重的總和。進位轉換是底層程式設計、數位邏輯設計、網路工程(MAC 和 IPv6 位址)、CSS 顏色代碼、Unix 檔案權限遮罩以及除錯期間記憶體位址檢查中的基本操作。
重複除法:將 N 除以目標基數 R,記錄餘數,對商重複此過程直到商為 0,然後反向讀取餘數。 將十進位數字 255 轉換為二進位、八進位和十六進位。二進位 (R = 2):255 ÷ 2 = 127 餘數 1,127 ÷ 2 = 63 餘 1,63 ÷ 2 = 31 餘 1,31 ÷ 2 = 15 餘 1,15 ÷ 2 = 7 餘 1,7 ÷ 2 = 3 餘 1,3 ÷ 2 = 1 餘 1,1 ÷ 2 = 0 餘 1。由下而上讀取餘數:11111111。八進位 (R = 8):255 ÷ 8 = 31 餘 7,31 ÷ 8 = 3 餘 7,3 ÷ 8 = 0 餘 3 → 377。十六進位 (R = 16):255 ÷ 16 = 15 餘 15 (F),15 ÷ 16 = 0 餘 15 (F) → FF。
十進位 4096 → 二進位 1000000000000,八進位 10000,十六進位 1000。有助於理解 4 KiB = 4096 位元組。
十進位 15 → 二進位 1111,八進位 17,十六進位 F。每個十六進位數字精確對應四個位元;F = 1111。
- ✓ 輸入值為非負整數(零或正整數)。小數值和負數需要擴展演算法(例如有符號二進位的二補數),這超出了本工具的範圍。
- ✓ 大於 9 的十六進位數字使用大寫字母 A–F 表示,遵循大多數程式語言、RFC 和硬體文件的慣例。
- ✓ 輸出結果中省略前導零。對於固定寬度的表示法(例如 8 位元或 32 位元二進位),請手動將結果補齊至所需寬度。
- ✓ 此計算機僅接受非負整數。拒絕大於 2^53 − 1 (JavaScript 的 Number.MAX_SAFE_INTEGER) 的值,以確保顯示的數字保持精確。
- 每個十六進位數字對應正好四個二進位位元 (bits),每個八進位數字對應正好三個位元。一旦記住這 16 種半位元組 (nibble) 模式,這種關係就能讓十六進位、八進位和二進位之間的心算轉換變得非常快速。
- 值得記住的常用值:0xFF = 255, 0x100 = 256, 0xFFFF = 65535, 0xFFFFFFFF = 4,294,967,295(最大無符號 32 位元整數)。
- Unix 檔案權限使用八進位:755 代表 rwxr-xr-x(擁有者讀取/寫入/執行,群組與其他使用者讀取/執行)。每個八進位數字編碼三個權限位元。
- CSS 十六進位顏色代碼是由三個連續的十六進位位元組值組成,分別代表紅、綠、藍色版。例如:#FF8800 代表紅色 255、綠色 136、藍色 0。
- 進位制理論 — Knuth, D. E., 《電腦程式設計藝術》第二卷:半數值演算法,第 4.1 節
- IEEE 754-2019 — 浮點運算標準(整數表示法相關)
- RFC 4291 — IP 第 6 版定址架構(IPv6 的十六進位標記法)
了解計算機中的進位制
每一種位值計數系統都使用一個基數(Radix),並根據每個數字的位置分配權重。在十進位(基數 10)中,最右邊的數字是個位,接著是十位、百位。二進位(基數 2)僅使用 0 和 1,直接對應電晶體的開/關狀態。八進位(基數 8)每位數字代表三個位元,而十六進位(基數 16)每位數字代表四個位元,並使用 A–F 表示數值 10–15。進位轉換使用連除法:將數字除以目標基數,記錄餘數,重複使用商數直到為零,然後反向讀取餘數。此演算法是程式設計中所有進位轉換的基礎。
開發者進行進位轉換的實際應用場景
開發者在檢查記憶體傾印(Memory Dumps)、偵錯位元運算、解讀檔案權限以及處理顏色代碼時會使用進位轉換。Unix 檔案權限(例如 755)是八進位:每個數字分別代表擁有者、群組和其他人的讀取/寫入/執行權限。CSS 十六進位顏色(如 #FF8800)是三個十六進位位元組的組合。IPv6 位址是以十六進位編寫的。位元遮罩(Bitmasks)和旗標通常以十六進位表示以提高可讀性(例如 0xFF 代表位元組遮罩,0xFFFF 代表 16 位元)。在偵錯底層程式碼或網路協定時,在十進位、十六進位和二進位之間轉換可以快速揭示底層的位元模式。
進位轉換計算機常見問題
為什麼電腦運算會使用二進位、八進位和十六進位?
二進位直接對應電晶體的開/關狀態,使其成為硬體的原生語言。八進位和十六進位是二進位的精簡縮寫 — 一個十六進位數字代表四個位元,一個八進位數字代表三個位元 — 因此程式設計師使用它們來表示位址、位元遮罩和顏色代碼,比長串的二進位字串更簡潔。
如何進行反向轉換(例如:十六進位轉十進位)?
將每個位數乘以其進位制的權次冪,然後將結果相加。例如:十六進位 1A3 = 1×16² + 10×16¹ + 3×16⁰ = 256 + 160 + 3 = 十進位 419。
遇到極大的數字時會發生什麼事?
此計算機僅接受 JavaScript 安全整數限制內的數值:2^53 − 1 (9,007,199,254,740,991)。超過此限制的數字將被拒絕,因為它們在瀏覽器中可能會遺失最低有效位數。
我可以轉換負數或分數嗎?
此工具處理非負整數。在計算中,負整數通常使用固定位元寬度的二補數表示,而分數值則使用 IEEE 754 浮點數編碼 — 這兩者都需要此計算機未收集的額外參數。
為什麼 0x 前綴出現在程式碼中,但不在輸出中?
0x 前綴(以及二進制的 0b、八進制的 0o)是特定語言的字面量語法,告知編譯器或直譯器預期的進制。此計算機輸出不含前綴的原始數字字串,以便在任何情境下使用。