2進数→16進数変換ツールとは?
このツールは、2進数(基数2、使う数字は0と1)で書かれた数値を16進数(基数16、使う文字は0〜9とA〜F)へ変換します。16進数はプログラミング、メモリアドレス、カラーコード、デバッグなどで広く使われています。理由は、2進数のデータをずっとコンパクトに表せるから。2進数の4ビットがちょうど1つの16進数の桁に対応するためです。
使い方
11010110 のような2進数を入力欄に入力(またはコピー&ペースト)して送信するだけです。スペースや余分な文字は無視されるので、1101 0110 のように書いても問題ありません。結果には、16進数の値、それに対応する10進数の値、そしてビット数が表示されます。
計算の仕組み
変換の基本は \( 16 = 2^4 \) という関係にあります。アルゴリズムはまず、2進数の文字列の長さが4の倍数になるまで左側を0で埋めます。次に、右側から4ビットずつのグループ(ニブルと呼びます)に分割します。各ニブルは0〜15の値で、
$$\text{Hex}_{16} = \sum_{i=0}^{n-1} d_i \cdot 16^{i}, \quad d_i \in \{0\text{–}9,\,A\text{–}F\} \;\leftarrow\; \text{Binary (base 2)}$$各ニブルは \( 8 \cdot b_3 + 4 \cdot b_2 + 2 \cdot b_1 + b_0 \) で計算され、その値が1つの16進数の桁(0〜9、続いてA〜F)に対応します。これらの桁をつなげれば16進数の結果になります。
具体例
11010110 を例にしましょう。ニブルに分割すると 1101 と 0110 になります。前半は \( 8+4+0+1 = 13 = D \)。後半は \( 0+4+2+0 = 6 \) です。したがって16進数の結果は D6 となり、10進数では214に相当します。
4ビット二進数ニブル・16進数変換表
二進数を16進数に変換する最も高速な方法は、ビットを4つのグループ(ニブルと呼ぶ)に分割し、各ニブルを単一の16進数で置き換えることです。\(2^4 = 16\)であるため、すべての4ビットパターンは正確に16個の16進数のいずれかにマッピングされます。以下の表を暗記または参照することで、除算を必要とせず、ニブルごとに任意の二進数を変換できます。
| 4ビット二進数(ニブル) | 10進法 | 16進数(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 |
作業例:バイト11010110は1101と0110に分割されます。表によると、これらはDと6にマッピングされ、16進値D6を与え、これは10進数で214に相当します。二進数の長さが4の倍数でない場合は、グループ化する前に左側を先行ゼロでパディングしてください(例えば、101101は0010 1101→2Dになります)。
主要用語
- ビット
- デジタル情報の最小単位で、0または1の単一の二進値を保持します。この単語は「二進数字」の短縮形です。
- ニブル
- 4ビットのグループ。4ビットは\(2^4 = 16\)の可能な値を表すため、1つのニブルはちょうど1つの16進数字に対応します。これが二進数から16進数への変換を非常に直接的にしています。
- バイト
-
8ビット(2つのニブル)のグループ。1バイトは\(2^8 = 256\)の可能な値を保持し、ちょうど2つの16進数字として記述されます。例:
11111111=FF= 255。 - 基数/基
- 位置記数法が使用する異なる数字記号の数、および位置値間の乗数。二進数は基数2、10進数は基数10、16進数は基数16です。基数\(b\)において、位置\(i\)(右から0から数える)の数字は重み\(b^{i}\)を持ちます。
- 二進数(基数2)
- 0と1のみの数字を使用する数体系で、各位置は2の冪の価値があります。デジタル電子機器のオン/オフ状態を反映しており、コンピュータのネイティブ言語となっています。
- 10進法(基数10)
- 0~9の数字を使用する日常的な数体系で、各位置は10の冪の価値があります。二進数と16進数の値を比較する際の一般的な基準点として機能します。
- 16進法(基数16)
- 0~9の後にA~F(A=10、B=11、C=12、D=13、E=14、F=15)の16個の数字を使用する数体系。その簡潔性(ニブルあたり1つの16進数字)により、長い二進数列は人間にとって読み書きがはるかに容易になります。
- 最上位ビット/最下位ビット
- 最上位ビット(MSB)は左端のビットで、最大の位置値(2の最大の乗)を持ちます。最下位ビット(LSB)は右端のビットで、最小の値(\(2^0 = 1\))を持ちます。同じ「最上位/最下位」の考え方が16進数の全体的な数字にも適用されます。
- 0xプレフィックス
-
数字の前に記述される従来のマーカーで、その値が16進法で表現されていることを示します。例えば、
0xD6は16進値D6(10進数214)を意味し、他の基数の「D6」という数字ではありません。C、Java、Pythonなどのプログラミング言語で広く使用されています。二進数も同様に0bというプレフィックスが付くことがよくあります。
よくある質問
ビット数が4で割り切れない場合は? 変換ツールが自動で左側に0を補うので、1010110 は 0101 0110 = 56 として扱われます。
先頭の0(リーディングゼロ)にも対応していますか? はい。最終的な16進数の出力からは先頭の0が取り除かれますが、値そのものは変わりません。
出力は大文字ですか? 16進数のA〜Fは慣例に従って大文字で表示され、わかりやすいよう先頭に 0x が付きます。