2進数→16進数変換ツールとは?
このツールは、2進数(0と1だけを使う基数2の数)を16進数(基数16)に変換します。16進数はコンピューターの世界で広く使われており、1桁が2進数のちょうど4桁分を表すため、長い2進数の文字列をぐっと短く、読みやすくできるのが特長です。
使い方
入力欄に 11010110 のような2進数を入力して送信するだけ。余分な文字は自動的に取り除かれ、0と1だけが残されて、16進数の結果と参考用の10進数が表示されます。
計算式のしくみ
この変換は \(16 = 2^4\) という関係に基づいています。まず2進数の文字列を左側に0を補って桁数を4の倍数にそろえ、右端から4ビットずつのグループ(ニブルと呼びます)に分割します。各ニブルは0〜15の値を取り、それぞれが16進数の1桁に対応します。0〜9はそのまま0〜9、10〜15はA〜Fで表されます。
$$\text{Hex} = \sum_{i=0}^{n-1} b_i \cdot 2^{\,n-1-i} \;\longrightarrow\; \text{base-16}$$
計算の具体例
11010110 を例に見てみましょう。ニブルに分割すると 1101 と 0110 になります。最初のニブルは \(8+4+0+1 = 13 \to\) D。2つ目は \(0+4+2+0 = 6 \to\) 6。したがって16進数の結果は D6 となり、これは10進数の214に相当します。
バイナリニブルから16進数への照査表
16進数への変換が機能するのは、正確に4つのバイナリビット(1つのニブル)が正確に1つの16進数にマップされるためです。ニブルは\(2^4 = 16\)の異なる値を表すことができ、16進数は16個の数字(0~9とA~F)を持つため、対応は一対一です。バイナリ数を変換するには、右から4ビットのグループに分割し、必要に応じて左端のグループにゼロを追加してからパディングし、下の表を使用して各ニブルを対応する16進数に置き換えます。
| 4ビットバイナリ | 10進数 | 16進数 |
|---|---|---|
| 0000 | 0 | 0 |
| 0001 | 1 | 1 |
| 0010 | 2 | 2 |
| 0011 | 3 | 3 |
| 0100 | 4 | 4 |
| 0101 | 5 | 5 |
| 0110 | 6 | 6 |
| 0111 | 7 | 7 |
| 1000 | 8 | 8 |
| 1001 | 9 | 9 |
| 1010 | 10 | A |
| 1011 | 11 | B |
| 1100 | 12 | C |
| 1101 | 13 | D |
| 1110 | 14 | E |
| 1111 | 15 | F |
例えば、バイナリ数1011 0110はニブル1011と0110に分割され、これらはBと6にマップされ、16進値B6を与えます。同じビットは10進では182に相当します。
主要用語の説明
- ビット
- デジタル情報の最小単位で、0または1の単一のバイナリ値を保持します。この言葉は「バイナリ数字」の短縮形です。
- ニブル
- 4ビットのグループです。ニブルは\(2^4 = 16\)の可能な値を持つため、正確に1つの16進数に対応し、バイナリから16進への変換が4ビットずつ行われる理由です。2つのニブルで1バイト(8ビット)になります。
- バイナリ(2進法)
- 0と1のみ2つのシンボルを使用する数値体系です。各位置は2の累乗を表すため、値は\(\sum b_i \cdot 2^{n-1-i}\)です。これはデジタル電子機器のネイティブ言語です。
- 16進法(16進数法)
- 16個のシンボルを使用する数値体系:0~9は値ゼロから9を表し、A~Fは値10から15を表します。各位置は16の累乗を表します。16進数は1つの16進数が4ビットに置き換わるため、バイナリを記述するコンパクトな方法です。
- 10進法(10進数法)
- 10個のシンボル(0~9)を使用する日常的な数値体系で、各位置は10の累乗を表します。変換ツールは多くの場合、10進値をなじみやすい参照ポイントとして表示します。
- 最下位ビット(LSB)
- バイナリ数の右端のビットで、最小の位置値(\(2^0 = 1\))を持ちます。これを変更すると、数値は最小量だけ変更されます。
- 最上位ビット(MSB)
- バイナリ数の左端のビットで、最大の位置値を持ちます。これを変更すると、数値の大きさに最も大きな影響を与えます。
- 先頭ゼロパディング
- バイナリ数の左にゼロを追加して、その合計長が4の倍数になるようにし、それを完全なニブルに分割できるようにします。例えば、110110は16進値にマップする前に0011 0110にパディングされます(3と6、つまり36)。先頭のゼロは数値を変更しません。
よくある質問
なぜ左側に0を補うの? ニブルに区切るには、全体のビット数が4の倍数である必要があります。左側に0を加えても値は変わらず、きれいに4ビットずつのグループに分けられます。
16進数の英字は大文字・小文字で違う? いいえ。A〜Fは大文字でも小文字でも同じ値を表します。このツールでは大文字で出力します。
スペースやほかの文字を入れたらどうなる? 0と1以外の文字はすべて無視されるため、1101 0110 でも 11010110 でも同じ結果になります。