gaya_udonのブログ

学んだことを自分の言葉にすることで理解が深まると思ったので、ブログ開設しました。主にPythonについて学習したことを書こうと思います。

16進数の変換について

こんにちは。
今日は16進数の変換ついて書いていきたいと思います。
まず、16進数の他にも2進数だとか10進数とかがあることは知っています。
2進数は0,1のみで数字を表す形です。主にコンピュータで使用されていますね。
10進数は皆がお馴染みの0~9まである形ですね。
そこで2進数と10進数について復習から始めていこうかなと思います。

2進数を10進数に変換
やり方として、2進数のすべての位にその位の今何乗かをかけてあげるやり方があります。
11010という数字を10進数に直してみようと思います。

    2進数  1   1   0   1   0
    何乗か  2⁴  2³  2²  2¹  2⁰

このように0乗から始まっていきます。
次に下の段×2進数の数をして、その結果を足していきます。
1 * 2⁴ + 1 * 2³ + 0 * 2² + 1 * 2¹ + 0 * 2⁰
=26
となるので、2進数11010の10進数は26となります。

10進数を2進数に変換
こっちは比較的簡単で、2進数で与えた数を2で割れなくなるまで割っていくだけです。
例えば、先ほどと同じように10進数の26を与えてあげます。
計算すると、

26 / 2 = 13...0
13 / 2 = 6 ...1
6 / 2 = 3 ...0
3 / 2 = 1 ,,,1
1

となり、答えは11010となります。

次に、今回のテーマでもある16進数についてです。
16進数は16種類の数字が使われるのですが、数字というのは0~9までしかありません。
そこで、アルファベットのA,B,C,D,E,Fを数字として使います。
並べてみると、0 1 2 3 4 5 6 7 8 9 A B C D E F 10
となります。

2進数を16進数に変換
この変換をする場合には、まず2進数を4桁ごとに区切って計算する必要があります。
例として、10011011を16進数に変換してみます。
まず数字を4桁に区切ります。
1001 | 1011
ここから先の作業は2進数を16進数に変換するやり方と同じです。

1  0  0  1    |    1  0  1  1
2³ 2² 2¹ 2⁰   |   2³ 2² 2¹ 2⁰

8+0+0+1   |  8+0+2+1

=9B
となります。

16進数を2進数に変換
この変換は10進数を2進数に変換する方法を分けてやるだけで出来ます。

   9 B B= 11
9 / 2 = 4...1 11 / 2 = 5...1
4 / 2 = 2...0 5 / 2 = 2...1
2 / 2 = 1...0 2 / 2 = 1...0
1 1

1001 1011
=10011011

16進数を10進数に変換
これも2進数を10進数に変換するやり方を分解してやるだけです。

 9B
B=11

  9  11
  16¹  16⁰
9 * 16¹ + 11 *16⁰
=155

10進数を16進数に変換

155

155 / 16 = 9...11
=9B

変換は2進数と10進数の変換が出来れば16進数も同じなので大丈夫ですね。