短い答え
16 進数 (基数 16) は、0 ~ 9 の数字と A ~ F の文字を使用し、各位置は 16 の累乗を表します。16 進数の FF は、10 進数の 15×16 + 15 = 255 に相当します。これは、1 バイトが保持できる最大値です。プログラマーが 16 進数を使用するのは、2 進数にきれいにマッピングされるためです。1 つの 16 進数の数字は常に正確に 4 ビットに等しいため、2 つの 16 進数の数字が完全なバイトを表します。
重要なポイント
- 2 つの 16 進数は 1 バイト (8 ビット)、つまり 00 ~ FF (0 ~ 255) の値に相当します。そのため、メモリ アドレス、バイト値、およびカラー コードは、ほとんどの場合 16 進数で表示されます。
- 16 進数から 2 進数への変換は機械的に行われます。16 進数の各桁を同等の 4 ビット 2 進数で置き換え、それらを結合します。
- 16 進数の算術演算は、10 進数の算術と同じ繰り上げおよび借用のロジックに従いますが、基数が 10 ではなく 16 であるだけです。
- Web カラー (#RRGGBB) は、赤、緑、青の 3 バイト値を、カラー チャネルごとに 2 つずつ、6 つの 16 進数にパックします。
16 進数値 (0 ~ F)
| 16進数 | 10進数 | 16進数 | 10進数 |
|---|---|---|---|
| A | 10 | D | 13 |
| B | 11 | E | 14 |
| C | 12 | F | 15 |
10 進数から 16 進数への変換
202 ÷ 16 = 12 余り 10 → A
12 ÷ 16 = 0 余り 12 → C
残りを下から上に読む: CA
したがって、10 進数の 202 は 16 進数の CA と等しくなります。逆のチェック: C×16 + A = 12×16 + 10 = 192 + 10 = 202 — 変換を確認します。
作業例: 16 進加算
3A+1F
A (10) + F (15) = 25 = 1×16 + 9 → 9 を書き込み、1 をキャリー
3 + 1 + キャリー 1 = 5
結果: 59
10 進数でのチェック: 3A = 58、1F = 31、および 58 + 31 = 89 (5×16 + 9 = 0x59) - 16 進数の算術と正確に一致します。 10 進加算との唯一の違いは、列が 10 ではなく 16 に達すると桁上げが発生することです。
避けるべきよくある間違い
- 習慣で 16 ではなく 10 で桁上げ — 16 進数の列は、値が 16 に達すると桁上げされます。10 進数のような 10 ではありません。
- 1 つの 16 進数が 1 ビットであると仮定すると、16 = 2⁴ であるため、常に 4 ビットを表します。
- 固定幅バイトまたはカラー チャネルで先頭のゼロを削除する — 0x0A と 0xA は同じ値ですが、2 桁のバイト表示では A ではなく 0A が予期されます。
- 数字の大文字と小文字が一貫して混合されていない — 16 進数では大文字と小文字が区別されません (a = A = 10) が、大文字と小文字を 1 つに留めることで、長い値での視覚的な混乱を避けることができます。