16進数の各桁(0〜F)を、対応する4ビットの2進数に展開して連結するだけ。8進→2進の「3ビット展開」と同じ発想で、16進では4ビットになります。
16進数 → 2進数は、コンパクトな16進数表記をビット列に展開する操作です。各桁をそのまま4ビットに展開するだけで、計算らしい計算がいりません。
例:
・A(16) = 1010(2)
・FF(16) = 11111111(2)(1111+1111)
・1B3E(16) = 1101100111110(2)(0001+1011+0011+1110→先頭0除去)
この変換が綺麗にできるのは、2⁴ = 16 という関係のおかげ。「2進4桁=16進1桁」というぴったりの対応があるので、桁ごとの展開だけで済みます。
手順は2つだけです。
・① 各桁を4ビットの2進数に変換(先頭の0は省略しない)
・② 左から順に連結し、必要なら先頭の0を除去
16通りの対応(暗記推奨):
| 16進 | 10進 | 2進4桁 |
|---|---|---|
| 0 | 0 | 0000 |
| 1 | 1 | 0001 |
| 2 | 2 | 0010 |
| 3 | 3 | 0011 |
| 4 | 4 | 0100 |
| 5 | 5 | 0101 |
| 6 | 6 | 0110 |
| 7 | 7 | 0111 |
| 8 | 8 | 1000 |
| 9 | 9 | 1001 |
| A | 10 | 1010 |
| B | 11 | 1011 |
| C | 12 | 1100 |
| D | 13 | 1101 |
| E | 14 | 1110 |
| F | 15 | 1111 |
16進→2進変換でつまずきやすいのが「A〜F の展開」です。0〜9 は10進と同じ感覚で扱えますが、A〜F は10〜15 の数字として扱い、それを4ビットの2進数に変換します。
A〜F の 4ビット表現(完全暗記):
A = 10 = 1010
B = 11 = 1011
C = 12 = 1100
D = 13 = 1101
E = 14 = 1110
F = 15 = 1111
覚え方のコツ:
・A(=10)= 1010 から始まり、1ずつ増えるごとに最下位ビットが交互に変化
・F = 1111(4ビット全部1) が最大
・各値は「8 + 何か」の形(A〜F は全て 8 以上)→ 最上位ビットが必ず 1
変換例(A〜F を含む):
CAFE(16) を2進数に
C → 1100
A → 1010
F → 1111
E → 1110
─────────────────────────
連結 = 1100 1010 1111 1110(2)
よくあるミス:
・「A」をそのまま「A」と書いて変換できなくなる(必ず 10 → 1010 に頭で置き換える)
・先頭の 0 を省略してしまう(A=1010 の左の 1 から書くべきところを「10」と書くと2ビットになってしまう)
・大文字小文字で混乱する(実際にはFFとffは同じ値)
覚えると便利な対応:
・FF = 11111111(1バイト最大)
・7F = 01111111(符号付き8bit整数の最大)
・80 = 10000000(符号付き8bit整数の最小ビット)
・#FF0000 = 11111111 00000000 00000000(CSSの赤)
・0xDEADBEEF = 11011110 10101101 10111110 11101111(有名なマジックナンバー)