FE EXAM

2進数 → 16進数(右から4桁ずつ束ねる)

2進数の桁数が長くて読みづらいときの定番テクニック。「右から4桁ずつ区切って、各グループを0〜F の1文字に変える」だけで、長い2進数が短い16進数に圧縮できます。

INTERACTIVE VISUALIZATION
2進数
16進数
2進数(入力)
10110011(2)
4桁グループ数
2
16進数(結果)
0xB3
2進数を入力
プリセット
右から4桁ずつ束ねます。左端が4桁に満たない場合は0を補って4桁に揃え、各グループを0〜F の1文字に変換します。
STEP 1: 右から4桁ずつ区切る(必要なら左端に0を補う)
1
0
1
1
= 11
0
0
1
1
= 3
STEP 2: 各グループを 0〜F の1文字に変換
1011
B
0011
3
結果
10110011(2)=B3(16)= 0xB3
解説

📌
2進→16進変換とは

2進数 → 16進数とは、長い 0/1 の並びを短い 0〜F の並びに圧縮する変換です。表す値は同じでも、表記が 1/4 の桁数になるので圧倒的に読みやすくなります。

たとえば10110011(8桁)を16進数に変換するとB3(たった2桁)になります。8ビットを1バイトと呼びますが、1バイト ≒ 16進数2桁という対応関係はそのまま使えます。

この変換が綺麗にできる理由は、「2進数4桁 = 16進数1桁」という綺麗な対応があるためです。2⁴ = 16 だから、2進4桁で表せる組み合わせ(16通り)がちょうど16進1桁(0〜F)と一致します。

🔍
4ビットずつ区切る理由

なぜ「3桁」でも「5桁」でもなく、ちょうど「4桁」で区切るのでしょうか。その答えは2⁴ = 16 という単純な等式にあります。

2進4桁で表せる組み合わせは「ちょうど16通り」です。
0000, 0001, 0010, ..., 1110, 1111
これが 0〜F の 16進1桁とぴったり一対一対応するため、グループ単位で機械的に置き換えるだけで変換できます。

2進4桁 ↔ 16進1桁
0000 = 0 1000 = 8
0001 = 1 1001 = 9
0010 = 2 1010 = A
0011 = 3 1011 = B
0100 = 4 1100 = C
0101 = 5 1101 = D
0110 = 6 1110 = E
0111 = 7 1111 = F

もし他の桁数だったら?
3桁ずつだと 2³ = 8 通り → 8進数になる(16進数にならない)
5桁ずつだと 2⁵ = 32 通り → 32進数になる
「束ねる桁数 = log₂(基数)」の関係を意識すると、何進数同士の変換でも応用が利きます。

なぜ「右から」なのか? 数の桁の重みは右端が一番低く、左に行くほど高くなります。16進1桁ぶん = 2進4桁ぶんの重みなので、右端から4桁単位で区切ると桁の境目が一致します。左端から区切ると最下位の重みが揃わず、計算結果が破綻します。

1バイト = 16進2桁: 8ビットを4ビットずつ区切ると、ちょうど16進数2桁になります。1バイトの値 0〜255 が16進では 00〜FF とコンパクトに表現できるのが、メモリダンプやカラーコードで16進数が選ばれる理由です。

グループ化の手順

実際の変換は3ステップだけです。順番が大事なので、頭から流れで覚えましょう。
① 右端から4桁ずつグループ化する
② 左端が4桁未満なら、左に 0 を補って4桁に揃える
③ 各グループを 0〜F の1文字に変換して左から並べる

例1: 10110011 を16進数に変換
右から4桁ずつ: 1011 | 0011
1011 = 8+2+1 = 11 = B
0011 = 2+1 = 3
結果: B3(16)

例2: 1101011 を16進数に変換(0埋めあり)
右から4桁: 110 | 1011 ← 左が3桁
左に0を補う: 0110 | 1011
0110 = 6、1011 = B
結果: 6B(16)

暗記推奨の対応表(16通り):

2進4桁10進16進
000000
000111
001022
001133
010044
010155
011066
011177
100088
100199
101010A
101111B
110012C
110113D
111014E
111115F

覚え方のコツ:
・0〜9 はそのまま
・10〜15 が A〜F(暗記必須)
・各グループ内では2進数 → 10進数の重み計算(8, 4, 2, 1)を使う
・2進4桁の最大 1111 = 15 = F11111111 = 255 = FF は代表的な値

上のツールで 11111111 を試してみてください。1111 1111 = FF。CSS の #FFFFFF(白)や、メモリアドレスの 0xFF など、実務でよく見る値です。

関連コンテンツ

2進数 → 16進数 | Vizigo