進位轉換器

在二進位、八進位、十進位或十六進位任一欄輸入整數,其他進位立即換算完成;也能看負數的二補數表示與自訂 2 到 36 進位。

在任一欄輸入整數,其他進位會即時換算。可輸入負號,也可貼上含 0x、0b 前綴或空白分組的數字。

—需要的位元數
—位元組(byte)
—二進位中 1 的個數
二補數(Two's complement)表示法
二進位位元—
十六進位—
視為無號整數(unsigned)—
視為有號整數(signed)—

如何使用進位轉換器

  1. 在「二進位」「八進位」「十進位」「十六進位」任一欄輸入數字,可加負號,也可直接貼上 0xFF、0b1010 這類帶前綴的寫法。
  2. 其他欄位會即時換算;需要 3 進位、32 進位、36 進位等,在「自訂進位」選擇基數即可。
  3. 勾選「分組顯示」讓長串二進位每 4 位一組,方便對照;按每欄右側的「複製」帶走結果。
  4. 在「二補數表示法」選擇 8、16、32 或 64 位元,查看負數在電腦中實際儲存的位元,以及同一組位元當成有號或無號整數的值。

進位制怎麼換算?除基數取餘數、乘位權相加

十進位轉其他進位用「連續除以基數、倒著取餘數」。以 255 轉二進位為例:255÷2 餘 1、127÷2 餘 1……一路除到 0,把餘數由下往上排就是 11111111。反過來,二進位轉十進位是把每一位乘上它的位權再相加,1010 從右到左的位權是 1、2、4、8,所以等於 8+2=10。

十六進位用 0–9 和 A–F 表示 0 到 15,每一位剛好對應 4 個二進位位元,所以二進位與十六進位可以直接四位一組互換:1111 1111 就是 FF,等於十進位 255;0x1F 等於 1×16+15=31。八進位則是三個位元一組,例如 Linux 權限 755 就是 111 101 101。程式碼中常用 0x、0b、0o 前綴標示十六、二、八進位,本工具貼上時會自動忽略。

負數與二補數(Two’s complement)

電腦中的整數有固定位元數,負數通常以「二補數」儲存:把正數的二進位每一位反轉,再加 1。例如 -1 在 8 位元中是 1111 1111(0xFF),-42 在 16 位元中是 0xFFD6。也因此同一組位元有兩種讀法:當成無號整數時 1111 1111 是 255,當成有號整數時是 -1;把 200 存進 8 位元再以有號整數讀取,會變成 -56。

n 位元有號整數的範圍是 -2 的 (n−1) 次方到 2 的 (n−1) 次方減 1,例如 8 位元是 -128 到 127、32 位元是 -2,147,483,648 到 2,147,483,647;無號整數則是 0 到 2 的 n 次方減 1。輸入超出範圍的數字時,工具會標示溢位,並顯示只保留低位元後的結果,和 C、Java 等語言的整數溢位行為相同。

36 進位與超大整數

超過 10 進位時,用英文字母 A 代表 10、B 代表 11,一路到 Z 代表 35,所以最大可到 36 進位,常見於短網址與流水號編碼,例如十進位 36 在 36 進位寫成 10。本工具支援 2 到 36 之間任何進位,輸入大小寫字母皆可。

一般的 JavaScript 數字超過 2 的 53 次方(9,007,199,254,740,992)就會失去精度,例如 9007199254740993 會被誤存成 …992。本工具全程以 BigInt 計算,64 位元最大值 18446744073709551615(十六進位 FFFF FFFF FFFF FFFF)或更長的雜湊值都能精確轉換。所有運算都在瀏覽器內完成,不會上傳任何資料。

常見問題

十六進位 FF 是十進位多少?

FF=15×16+15=255,也就是二進位 1111 1111,是 1 個位元組(8 位元)能表示的最大無號整數。

十進位怎麼轉二進位?

把數字不斷除以 2,記下每次的餘數,直到商為 0,再把餘數由最後一個往回排。例如 13 依序得到餘數 1、0、1、1,倒過來就是 1101。

負數的二進位怎麼表示?

電腦通常用二補數:先寫出正數的二進位,每一位 0 與 1 對調,再加 1。例如 8 位元的 -5:0000 0101 反轉為 1111 1010,加 1 得到 1111 1011。

可以轉換小數嗎?

本工具專門處理整數,以確保超大數字也能精確換算。含小數點的數字會顯示錯誤提示,若要換算小數請先拆成整數部分處理。

為什麼十六進位要用英文字母?

每一位需要表示 0 到 15 共 16 種數值,但阿拉伯數字只有 0 到 9,所以用 A 到 F 代表 10 到 15,大小寫意義相同。

最後更新: