[情報処理技術者試験]2進数・10進数・16進数の意味と進数変換の方法



人は生活上、10進数に慣れていますが、コンピュータが扱う進数は2進数です。
進数違いを理解し、進数変換の方法を理解しなければ、情報処理試験をはじめいたるところで苦戦します。
記事では進数の意味や計算の手順について解説します。
10進数とは
10進数は、普段私達が使っている進数で非常に馴染み深い数です。10進数を2進数・16進数などに進数変換する場合、あらためて10進数を理解する必要があります。
10進数の桁上がり
10進数の場合、数字を0、1、2、・・・7、8、9と数えていくと9の次に桁が上がって10になります。
そして10、11、12、・・・97、98、99と数えていくと99の次に桁が上がり100になります。
この1が10個集まって10になったときは10が1回ということで、10^{1}、10が10個集まって100になったときは10を2回かけた塊として、10^{2}のように表します。

このように、数字が10個集まって桁が一つ上がることを10を基数にしていると言います。
分かりやすい例で挙げると、2023の場合、10^{3}が2個、10^{2}が0個、10^{1}が2個、10^{0}が3個集まったものと考えられます。
2進数・16進数について
次に少し馴染みにくい進数の2進数・16進数についても確認しましょう。
2進数
2進数はその名の通り、「0」と「1」の2つの数字だけを扱います。
0の次は1になりますが、1の次は2ではなく、桁が上がって10となります。。
このように2を基数としたものを2進数と呼び、2倍ごとに桁が上がっていきます。
例を挙げるなら10010であれば、2^{4}が1個、2^{3}が0個、2^{2}が0個、2^{1}が1個、2^{0}が0個集まったものと考えられます。
10進数と2進数の対応表は以下のようになります。
10進数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
2進数 | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 |
10進数 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
2進数 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |


16進数
16進数は16を基数として数える方法です。数字では0から9までしか扱えないので、それに加えてAからFの6つのアルファベットを加えて16の数字を活用します。
9の次が10にならずにA、B、・・・と増えて行き、Fの次に初めて10となります。
それ以降も同様で、9Fの次が100になるのではなく、FFの次が100になる点も注意しましょう。

10進数と16進数の対応表は以下になります。
10進数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
16進数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
(10) | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
(16) | 8 | 9 | A | B | C | D | E | F | 10 |
その他の進数
2進数や16進数以外にも、身の回りにはいくつもの進数が存在しています。
例えば1日は24時間なので時間は24進数です。1時間は60分なので分は60進数と考えられます。
ただし、2進数・16進数以外はあまり情報処理技術者試験で問われることが無いので割愛します。

進数変換の計算方法
次に進数の変換・計算方法を確認しましょう。
n進数から10進数
まずはn進数(今回の場合だとnには2や16が入る)から10進数へ変換する方法から確認しましょう。
nは自然数(Natural number)の頭文字で、任意の自然数を入れて良いです。
n進数の場合、各桁にn個の塊がいくつあるかを見ていくことになります。
10101がn進数の場合はn^{4}が1個、n^{3}が0個、n^{2}が1個、n^{1}が0個、n^{0}が1個集まった数字です。
具体的にnに値を放り込んで計算しましょう。
10101が2進数だとすると、10進数で表した場合は2^{4}が1個、2^{3}が0個、2^{2}が1個、2^{1}が0個、2^{0}が1個なので、以下のようになります。
\begin{eqnarray}&&2^{4} \times 1 + 2^{3} \times 0 + 2^{2} \times 1 + 2^{1} \times 0 + 2^{0} \times 1 \\&=& 16 + 0 + 4 + 0 +1 \\&=& 21\end{eqnarray}
次に10101が16進数だとすると、10進数で表した場合は16^{4}が1個、16^{3}が0個、16^{2}が1個、16^{1}が0個、16^{0}が1個なので、以下のようになります。
\begin{eqnarray}&&16^{4} \times 1 + 16^{3} \times 0 + 16^{2} \times 1 + 16^{1} \times 0 + 16^{0} \times 1
\\&=& 65536 + 0 + 256 + 0 +1
\\&=& 65793\end{eqnarray}
同じような要領でnに任意の数字を代入すればその進数を10進数に変換したときの値をがすぐに求まります。
10進数からn進数
次に10進数をn進数に変換する方法です。
こちらは10進数の中にいくつnの塊を作ることができるか考える必要があります。つまりnで割っていけば良いです。
そしてもう一つ着眼すべきは余りです。
求め方としては元の10進数Dをnで割り、商をa_{1}、余りをb_{1}。次に商のa_{1}を再びnで割り、商をa_{2}、余りをb_{2}としてその作業を商の値がnの値より小さくなるまで続けます。
図に描くと以下のようになります。
そしてこれをa_{m}から図のように羅列します。
a_{m}b_{m-1}・・・b_{2}b_{1}が10進数に変換した値になります。これだけだと分かりづらいので、具体的な数字を入れてみましょう。
10進数の数字を1000として、これを16進数に変換する流れを見ていきます。
上の図のDに1000を、nに16を代入します。結果以下のようになります。
数字を矢印の方向に読めばいいのですが、16進数で14はEとなるります。その点に留意すると、3E8が答えとなります。
他の進数の場合も割る値をnに代入してやれば同様にして求められます。
進数変換の計算問題
では慣れてきたところで一度練習問題を解いてみましょう。解法は上で説明した流れで解けるので、正答のみ記載します。
問1(10進数から2進数の計算)
(1) 8
(2) 100
問2(10進数から16進数の計算)
(1) 10
(2) 100
問3(2進数から10進数の計算)
(1) 111
(2) 10101101
問4(16進数から10進数の計算)
(1) F
(2) 1A2B3C
2進数・10進数・16進数まとめ
私達が馴染んでいる10進数以外を知らないと、試験で問われても答えられません。特に2進数・16進数は試験でもよく問われます。
基本情報技術者試験ではプログラミングと絡めた問題も出るので、浮動小数点やIPアドレスの計算とセットで理解しておきましょう。


福井県産。北海道に行ったり新潟に行ったりと、雪国を旅してます。
経理4年/インフラエンジニア7年(内4年は兼務)/ライター5年(副業)
簿記2級/FP2級/応用情報技術者/情報処理安全確保支援士/中小企業診断修得者 など
ディスカッション
コメント一覧
10進数と2進数の対応表の12は1100で以降ずれていませんか?
ずれていました・・・ご指摘ありがとうございます、修正しました!