2進数→10進数 変換ツールとは?
2進数→10進数の変換ツールは、基数2(0と1の数字だけを使う表記)で書かれた数値を、私たちが普段使っている基数10の数値に変換するものです。コンピュータはあらゆるデータを2進数で記憶・処理しているため、生のビット列、メモリダンプ、ネットワークマスク、プログラムの出力などから人が読める値を取り出すには、10進数への変換が欠かせません。
使い方
入力欄に2進数を入力します。たとえば 101101 のように入力すると、ツールが10進数の値とビット数を表示します。0と1以外の文字は無視されるため、1011 0101 のように空白で区切ったビット列をそのまま貼り付けても問題ありません。
計算式の解説
各2進数の桁(ビット)は、右端を0として位置を数え、その位置に応じて2をその回数だけ累乗した「位の重み」を持ちます。10進数の値は、すべてのビットにそれぞれの重みを掛けて合計したものです。
$$\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 = 45$$したがって、2進数 101101 は10進数の 45 に等しくなります。
2のべき乗の位取り重み
2進数では、各ビットは2のべき乗に等しい位取り重みを持ちます。最も右のビット(位置0)の重みは\(2^0 = 1\)であり、左方の各位置では重みが倍になります。手作業で変換するには、各ビットにその重みを掛け、結果を加えます:
$$\text{10進数} = \sum_{i=0}^{n-1} d_i \cdot 2^{\,i}$$
ここで、\(i\)は右(最下位ビット)から位置をカウントし、0から始まります。
| ビット位置 \(i\) | べき乗 \(2^i\) | 10進重み |
|---|---|---|
| 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\)(8ビット全て1に設定)で、16ビットでは\(2^{16} - 1 = 65{,}535\)です。
さらに計算した例
各例では、すべてのビットを上の表からの位取り重みと対応させ、ビットが1である重みのみを保ち、加算して10進値を求めます。
例1:11111111(8ビット全て1)
すべてのビットが1なので、位置7から位置0までの8つの重みすべてを加えます:
$$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$$
10進の結果は405です。10進数から2進数へのコンバーターで405を入力して、110010101が返されることで逆方向を確認できます。
よくある質問
8ビットで表せる最大の2進数は? 11111111 で、10進数では 255(\(2^8 - 1\))になります。
先頭にゼロを付けても大丈夫? はい。先頭のゼロは値を変えません。0010 は 10 と同じで、どちらも10進数の 2 です。
小数の2進数にも対応している? いいえ。このツールは整数の2進数のみを変換します。小数点以下の部分には対応していません。