10進数を16進数に変換する手順は「16で割って余り(0〜15)を記録、余りが10以上ならA〜Fに変換、逆順に並べる」。割り算法の応用形です。
10進数 → 16進数は、10進数の値を 0〜9とA〜F の 16 種類を使う16進数表記に変換する操作です。手順は10進→2進や→8進と同じ「割り算法」で、割る数を 16 に変えるだけ。
唯一の違いは「余りが 10 以上のとき、A〜F に置き換える」こと。0〜9 はそのまま、10→A、11→B、12→C、13→D、14→E、15→F。
たとえば255(10進)を16進数に変換するとFF(16進)。「255 = 15×16 + 15」で、15 = F なので「FF」になります。
手順は4ステップ。
・① 元の数を 16 で割り、商と余りを書き出す
・② 余りが 10 以上なら A〜F に変換
・③ 商を次の割られる数として、また 16 で割る
・④ 商が 0 になるまで①〜③を繰り返し、余りを逆順に並べる
255 を変換する例:
・255 ÷ 16 = 15 余り 15 → F
・15 ÷ 16 = 0 余り 15 → F
・結果: FF
4095 を変換する例:
・4095 ÷ 16 = 255 余り 15 → F
・255 ÷ 16 = 15 余り 15 → F
・15 ÷ 16 = 0 余り 15 → F
・結果: FFF
16進数で最初に戸惑うのが「10〜15は A〜F に置き換える」というルールです。なぜわざわざアルファベットを使うのか、ここを理解しておくと変換ミスがなくなります。
なぜ A〜F なのか? 16進数は「1桁で 0〜15 の16通り」を表す必要があります。0〜9 で 10種類しか書けないので、足りない 10〜15 の 6 種類にアルファベットを当てて「1桁=1文字」を守っています。
10進: 10 11 12 13 14 15
16進: A B C D E F
─────────────────────────
A = 10、B = 11、C = 12
D = 13、E = 14、F = 15
覚え方のコツ:
・A から順に 10、11、12、…、15(アルファベット順 = 数値順)
・F = 15 = 1111(2)(4ビット全部1)が最大
・大文字・小文字どちらでもOK(FF も ff も同じ値)。プログラムでは大文字が多い
変換時の注意点:
・割り算で出てくる余りは必ず 0〜15。16 以上なら計算ミス
・余りが 10 以上のときは必ずA〜Fに変換してから並べる(10と書いたままだと2桁分になってしまう)
・「255 = 15×16 + 15」→「F×16 + F」→FF。10進の15を2回書きそうになるが、それは間違い
有名な16進数:
・FF = 255 = 1バイト最大、FFFF = 65535 = 2バイト最大
・0xCAFE, 0xDEADBEEF など、A〜F で「単語」が作れるのも16進数ならではの遊び心