什麼是二進位轉十進位轉換器?
二進位轉十進位轉換器,能把以 base 2 表示(只用 0 和 1 兩個數字)的數值,換算成我們日常使用的 base 10 十進位數字。電腦底層的儲存與運算全都以二進位進行,因此每當你需要把原始位元、記憶體傾印、網路遮罩或程式輸出轉換成人類看得懂的數值時,二進位轉十進位就派上用場。
使用方式
在欄位中輸入你的二進位數字——例如 101101——轉換器就會回傳對應的十進位數值,並顯示位元數。任何非 0 或 1 的字元都會自動忽略,所以你也可以放心貼上以空格分組的寫法,例如 1011 0101。
公式說明
每一個二進位數字(位元)都帶有一個位值權重,等於 2 的次方,從最右邊以 0 開始往左計算。十進位數值就是每個位元乘上其權重後的總和:
$$\text{Decimal} = \sum_{i=0}^{n-1} d_i \cdot 2^{\,n-1-i}, \quad d_i \in \text{Binary Number}$$
最右邊的位元權重是 \(2^0 = 1\),下一位是 \(2^1 = 2\),再來是 \(2^2 = 4\)、\(2^3 = 8\),依此類推。
實例演算
以 101101 為例,從右往左對應的權重為 1、2、4、8、16、32:
$$(1\cdot32) + (0\cdot16) + (1\cdot8) + (1\cdot4) + (0\cdot2) + (1\cdot1) = 32 + 8 + 4 + 1 = \mathbf{45}$$。因此二進位 101101 等於十進位 45。
二的乘方位置權重
在二進制數中,每個比特的位置權重等於2的乘方。最右邊的比特(位置0)的權重為\(2^0 = 1\),每向左移動一個位置,權重就加倍。要手工轉換,請將每個比特乘以其權重並加上結果:
$$\text{十進制} = \sum_{i=0}^{n-1} d_i \cdot 2^{\,i}$$
其中\(i\)從右邊開始計算位置(最不重要的比特),從0開始。
| 比特位置\(i\) | 乘方\(2^i\) | 十進制權重 |
|---|---|---|
| 0 | \(2^0\) | 1 |
| 1 | \(2^1\) | 2 |
| 2 | \(2^2\) | 4 |
| 3 | \(2^3\) | 8 |
| 4 | \(2^4\) | 16 |
| 5 | \(2^5\) | 32 |
| 6 | \(2^6\) | 64 |
| 7 | \(2^7\) | 128 |
| 8 | \(2^8\) | 256 |
| 9 | \(2^9\) | 512 |
| 10 | \(2^{10}\) | 1,024 |
| 11 | \(2^{11}\) | 2,048 |
| 12 | \(2^{12}\) | 4,096 |
| 13 | \(2^{13}\) | 8,192 |
| 14 | \(2^{14}\) | 16,384 |
| 15 | \(2^{15}\) | 32,768 |
| 16 | \(2^{16}\) | 65,536 |
對於8位字節,最大值為\(2^8 - 1 = 255\)(所有八個比特都設為1),對於16位,最大值為\(2^{16} - 1 = 65{,}535\)。
更多完成的範例
每個範例都將每個比特與上表中的位置權重對齊,僅保留比特為1的位置的權重,並相加以得到十進制值。
範例1:11111111(8位全部設為1)
每個比特都是1,所以我們從位置7到位置0加上所有八個權重:
$$128 + 64 + 32 + 16 + 8 + 4 + 2 + 1$$
總數為255,這是8位字節可以保存的最大值。
範例2:10000000
只有最左邊的比特(位置7)為1;所有其他位置貢獻0:
$$1\cdot128 + 0\cdot64 + 0\cdot32 + 0\cdot16 + 0\cdot8 + 0\cdot4 + 0\cdot2 + 0\cdot1$$
這簡化為單個權重\(2^7\),得到128。
範例3:110010101(9位)
將比特與其位置權重一起寫出,1位在位置8、7、4、2和0:
| 比特 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|---|
| 位置 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 權重 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
僅將比特為1的位置的權重相加:
$$256 + 128 + 16 + 4 + 1$$
十進制結果為405。您可以使用十進制轉二進制轉換器通過輸入405來確認反向方向,並檢查它是否返回110010101。
常見問題
8 位元最大的二進位數字是多少?答案是 11111111,換算成十進位等於 255(也就是 \(2^8 - 1\))。
可以輸入開頭的零嗎?可以。開頭的零不會改變數值——0010 和 10 是一樣的,兩者都等於十進位的 2。
能處理二進位小數嗎?不行,本工具只能轉換整數型的二進位數字,小數點後的部分並不支援。