10進法→16進法
16進法は 0 ~ 9 と A ~ F の16文字の情報で成り立つ数値です。
10進法から16進法への変換は直観的に分かり難い部分があります。
15 を 16進法にすると F となります。
これは単純に 10 ~ 15 を A ~ F と置き換えているだけです。
では 45 を16進法に変換してみましょう。
45 / 16 = 2 余り 13
2 / 16 = 0 余り 2
次にそれぞれの余りを16進法の値に置き換えて繋げていきます。
2 = 2
13 = D
これで 45 = 2D という事になります。
16で割った値を16進法の表記にする際に10以上の値は少し戸惑うかもしれませんが、要領が分かれば簡単だと思います。
16進法→10進法
これも10進法からの変換を逆に計算していきます。
では 2E3 という値を10進法に変換してみましょう。
先ずは 2E3 をそれぞれ桁ごとに10進法の値に変換します。
2 = 2
E = 14
3 = 3
次にこれらの桁に合わせて 16 のべき乗で掛け合わせていきます。
3 * 16⁰ = 3 * 1 = 3
14 * 16¹ = 14 * 16 = 224
2 * 16² = 2 * 256 = 512
これがそれぞれの桁の値です。
最後はこの合計値を求めることで10進法への変換が完了します。
3 + 224 + 512 = 739
16進法では掛け合わせる値が大きいので少し難しく感じますね。
ただ計算は単純なので落ち着いて計算しましょう!
2進法↔16進法
実は2進法と16進法は親和性が高いので意外と簡単に変換できてしまいます。
例えば F を2進法に変換する場合で考えてみましょう。
この場合は先ず10進法に変換してから2進法します。
F = 15 = 1111
このように 1111 となります。
勘の鋭い方はこの結果から気付いた人もいるかもしれませんね!
16進法での F は一桁で表せる最大の値です。
同じく 1111 は2進法の4桁で表せる最大の値です。
つまり16進法の1桁は2進法の4桁と同等の情報量となるのです。
16進法→2進法
では次に A5BE の値を2進法に変換してみましょう。
先ずそれぞれの桁を2進法に変換します。
A = 1010
5 = 0101
B = 1011
E = 1110
桁ごとの2進法に変換できれば後は簡単です。
A5BE = 1010 0101 1011 1110
全ての値を横に並べるだけで2進法に変換できてしまうのです。
2進法→16進法
次に2進法の値を16進法に変換してみましょう。
1100001011111010
この値を16進法にするには4桁ごとに値を区切って16進法の値に置き換えていくだけです。
1100 | 0010 | 1111 | 1010
1100 = C
0010 = 2
1111 = F
1010 = A
最後はこれを並べるだけです。
1100001011111010 = C2FA
2進法と16進法の変換は思った以上に簡単にできたではないでしょうか。
これらがプログラムでよく用いられる進法の変換です。
知らなければ難しく感じますが、慣れると簡単なので皆さんもこれを機に学んでみてはいかがでしょうか?