10進数・2進数・16進数を変換する方法(計算式)【応用情報】

情報

【応用情報技術者試験・基礎理論】

内容:10進数と2進数の間の変換、10進数と16進数の間の変換

2進数

我々が普段よく見る数は、10進数といって、1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …, 1903, …というように、1~9の数を使って表現します(9までいったら、次からは桁が上がり、10になります)。

しかし、コンピュータの大元は、0か1しか判断できません。

なので、我々の10進数表記を、0と1しか使わない表現に変換してあげる必要があります。

この0か1しか使わない表現方法を、2進数といいます。

2進数は、こんな感じで数を表現します。

0

1 ←ここまでは10進数と同じ

10 ←2進数では2を使えない(0か1しか使えない)ため、桁を上げてまた0から

11

100 ←先ほどと同じように、12とはできないため、桁を上げて表現

16進数

2進数では0~1の2つの数字、10進数では0~9の10つの数字しか使えませんでしたが、16進数では、0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F の10個の数字と6個のアルファベットを使って表現します。

考え方は2進数と同じで、Fまでいったら桁が上がります。

0

1

2

9 ← ここまでは10進数と同じ

A ← 16進数では、9の次はA

B

F ← 16進数で使える最大の記号

10 ← Fの次は、桁が上がって、また0から

11 

19 

1A

10進数 ↔ 2進数 の変換

10進数と2進数の対応は、次のようになっています。

10進数2進数
00
11
210
311
4100
5101

2進数から10進数に変換

これらの関係は、a を100の位、 b を10の位、 c を一の位として、2進数で abc と表されるとき(例えば、101)、次の式で計算できます。

2進数表記で abc のとき、10進数表記では

    \[a\times2^{2} + b\times2^{1} + c\times2^{0}\]

となります。

例えば、2進数の101は、10進数では

    \[1\times2^{2} + 0\times2^{1} + 1\times2^{0}  =  5\]

と、5になります。

桁があがっても、同様に変換することができます。

例えば、二進数110101は、10進数では

    \[1\times2^{5} + 1\times2^{4} + 0\times2^{3} + 1\times2^{2} + 0\times2^{1} + 1\times2^{0}  =  53\]

と、53になります。

10進数から2進数に変換

10進数から2進数への変換は、次のように行います。

(1)まず、10進数を2で割り、その商と余りを求める

(2)さらに商を2で割り、その商と余りを求める

(3)商が0になるまで繰り返す

(4)余りを、最後に求まったものから順に並べる。

2で割った余りは0か1なので、余りを並べたものは2進数表記になることが分ります。

たとえば、10進数表記の21を2進数に変換するとき、次のように計算します。

21÷2 = 10余り1

10÷2 = 5余り0

5÷2 = 2余り1

2÷2 = 1余り0

1÷2 = 0余り1

この余りを新しいものからならべて、10101となります。

10進数 ↔ 16進数 の変換

10進数と16進数の対応表は、次のようになっています。

10進数16進数
00
11
22
99
10A
11B
15F
1610
1711
2519
261A

※10進数の17は16進数では11だったりするからややこしいけど気を付けて。

変換の考え方は、2進数と同じです。

16進数から10進数に変換

a を100の位、 b を10の位、 c を一の位として、16進数で abc と表されるとき(例えば、1A0)、次の式で計算できます。

    \[a\times16^{2} + b\times16^{1} + c\times16^{0}\]

となります。

ただし、 a, b , c はそれぞれ16進数表示から10進数に直します。例えば、 b = B のとき、 b の値は11として計算します。

例えば、16進数でB3Aは、 10進数では

    \[11\times16^{2} + 3\times16^{1} + 10\times16^{0} = 2874\]

となります。

2進数と同様に、3桁以上のときの計算は、たとえば、16進数で11A92は、10進数に直すと

    \[1\times16^{4} + 1\times16^{3}  + 10\times16^{2} + 9\times16^{1} + 2\times16^{0} = 72338\]

となります。

10進数から16進数に変換

こちらも、2進数の場合と同様に求めることができます。

たとえば、10進数2874は、16で割っていくことで、次のように16進数で表現できます。

2874÷16 = 179余り10 (16進数でA)

179÷16 = 11余り3

11÷16 = 0余り11 (16進数でB)

この余りを新しい順から並べて、B3Aとなります。

コメント

タイトルとURLをコピーしました