【初心者向け】基数の変換方法を完全解説!2進数/8進数/16進数の計算のコツ
この記事では、基本情報技術者試験において重要な基数について解説します。基数とは、数を表すための記数法の基礎となる数値のことです。普段私たちが何気なく使っている10進数も、コンピュータの世界で使われる2進数も、すべて基数の概念に基づいています。
基本情報技術者試験では、2進数、8進数、10進数、16進数の相互変換や、基数に関する計算問題が出題されます。これらの問題を解くためには、基数の概念をしっかりと理解しておく必要があります。基数はコンピュータ内部でのデータ表現や処理の基礎となるため、試験対策だけでなく、ITエンジニアとしての基礎知識を築く上でも非常に重要です。
また、基数はコンピュータサイエンスの分野だけでなく、様々な分野で応用されています。例えば、コンピュータグラフィックスでは色の表現に16進数が使われていたり、データ圧縮では2進数の考え方が利用されていたりします。暗号化技術においても、基数の変換が重要な役割を担っています。
この記事を読むことで、基数の基礎知識を習得し、試験対策に役立てることができます。ぜひ最後まで読んで、基数をマスターしましょう!
基数の種類
基数には、10進数、2進数、8進数、16進数など、様々な種類があります。ここでは、基本情報技術者試験で特に重要な4つの基数について解説します。
10進数
10進数は、私たちが普段使っている最も馴染み深い基数です。0から9までの10個の数字を用いて数を表し、10倍ごとに桁が上がります。例えば、123という数字は、1×102+2×101+3×100 というように、各桁の数字に10の累乗を掛けて足し合わせたものとして表されます。
2進数
2進数は、コンピュータ内部で情報を処理するために使われる基数です。0と1の2つの数字だけを用いて数を表し、2倍ごとに桁が上がります。コンピュータは電子回路で構成されており、電圧の高低を0と1に対応させることで情報を表現しています。そのため、コンピュータ内部ではすべてのデータが2進数で処理されています。例えば、2進数の1011は、10進数では 1×23+0×22+1×21+1×20=8+0+2+1=11 となります。
8進数
8進数は、0から7までの8つの数字を用いて数を表す基数です。8倍ごとに桁が上がります。2進数と相性が良く、2進数を3桁ごとに区切って8進数に変換することができます。これは、8=23 という関係があるためです。
16進数
16進数は、0から9までの数字とAからFまでのアルファベットを用いて数を表す基数です。16倍ごとに桁が上がります。AからFはそれぞれ10から15に対応します。2進数を4桁ごとに区切って16進数に変換することができます。これも、16=24 という関係があるためです。
16進数の数値対応表
10進数 | 16進数 |
---|---|
10 | A |
11 | B |
12 | C |
13 | D |
14 | E |
15 | F |
基数間の関係性
2進数、8進数、10進数、16進数は、それぞれ異なる基数を持つ記数法ですが、相互に変換することができます。特に、2進数はコンピュータ内部で情報処理の基礎として使われており、8進数と16進数は2進数の表記を簡潔にするために利用されます。
8進数は、2進数の3桁を1桁で表現できるので、2進数よりも短く表記することができます。16進数は、2進数の4桁を1桁で表現できるので、さらに短く表記することができます。
基数の変換
基本情報技術者試験では、異なる基数の数値を相互に変換する問題が出題されます。ここでは、10進数、2進数、8進数、16進数の間の変換方法を具体的に解説します。
10進数を2進数に変換する方法
10進数を2進数に変換するには、以下の手順に従います。
- 10進数を2で割る。
- 商を2で割る。
- 商が0になるまで、2を繰り返す。
- 各段階で出た余りを下から順に並べる。
この手順は、10進数を2の累乗の和で表すことに基づいています。各段階で2で割ることで、2の累乗の係数(0または1)を求めていることになります。
例題1
10進数の13を2進数に変換する。
13 ÷ 2 = 6 余り 1
6 ÷ 2 = 3 余り 0
3 ÷ 2 = 1 余り 1
1 ÷ 2 = 0 余り 1
余りを下から順に並べると、1101となる。
よって、10進数の13は2進数で1101と表される。
例題2
10進数の42を2進数に変換する。
42 ÷ 2 = 21 余り 0
21 ÷ 2 = 10 余り 1
10 ÷ 2 = 5 余り 0
5 ÷ 2 = 2 余り 1
2 ÷ 2 = 1 余り 0
1 ÷ 2 = 0 余り 1
余りを下から順に並べると、101010となる。
よって、10進数の42は2進数で101010と表される。
2進数を10進数に変換する方法
2進数を10進数に変換するには、各桁の数字に2の累乗を掛けて足し合わせます。これは、2進数の各桁が2の累乗に対応していることを利用した方法です。
例題1
2進数の1101を10進数に変換する。
1×23+1×22+0×21+1×20=8+4+0+1=13
よって、2進数の1101は10進数で13と表される。
例題2
2進数の100111を10進数に変換する。
1×25+0×24+0×23+1×22+1×21+1×20=32+0+0+4+2+1=39
よって、2進数の100111は10進数で39と表される。
10進数を8進数に変換する方法
10進数を8進数に変換するには、10進数を2進数に変換する手順と同様に、以下の手順に従います。
- 10進数を8で割る。
- 商を8で割る。
- 商が0になるまで、2を繰り返す。
- 各段階で出た余りを下から順に並べる。
この手順は、10進数を8の累乗の和で表すことに基づいています。
例題1
10進数の30を8進数に変換する。
30 ÷ 8 = 3 余り 6
3 ÷ 8 = 0 余り 3
余りを下から順に並べると、36となる。
よって、10進数の30は8進数で36と表される。
例題2
10進数の123を8進数に変換する。
123 ÷ 8 = 15 余り 3
15 ÷ 8 = 1 余り 7
1 ÷ 8 = 0 余り 1
余りを下から順に並べると、173となる。
よって、10進数の123は8進数で173と表される。
8進数を10進数に変換する方法
8進数を10進数に変換するには、2進数を10進数に変換する手順と同様に、各桁の数字に8の累乗を掛けて足し合わせます。
例題1
8進数の36を10進数に変換する。
3×81+6×80=24+6=30
よって、8進数の36は10進数で30と表される。
例題2
8進数の237を10進数に変換する。
2×82+3×81+7×80=128+24+7=159
よって、8進数の237は10進数で159と表される。
10進数を16進数に変換する方法
10進数を16進数に変換するには、10進数を2進数に変換する手順と同様に、以下の手順に従います。
- 10進数を16で割る。
- 商を16で割る。
- 商が0になるまで、2を繰り返す。
- 各段階で出た余りを下から順に並べる。
- 余りが10以上の場合は、A~Fに対応するアルファベットに置き換える。
例題1
10進数の200を16進数に変換する。
200 ÷ 16 = 12 余り 8
12 ÷ 16 = 0 余り 12
余りを下から順に並べ、12をCに置き換えると、C8となる。
よって、10進数の200は16進数でC8と表される。
例題2
10進数の300を16進数に変換する。
300 ÷ 16 = 18 余り 12
18 ÷ 16 = 1 余り 2
1 ÷ 16 = 0 余り 1
余りを下から順に並べ、12をCに置き換えると、12Cとなる。
よって、10進数の300は16進数で12Cと表される。
16進数を10進数に変換する方法
16進数を10進数に変換するには、2進数を10進数に変換する手順と同様に、各桁の数字に16の累乗を掛けて足し合わせます。アルファベットA~Fはそれぞれ10~15として計算します。
例題1
16進数のC8を10進数に変換する。
12×161+8×160=192+8=200
よって、16進数のC8は10進数で200と表される。
例題2
16進数の1A3を10進数に変換する。
1×162+10×161+3×160=256+160+3=419
よって、16進数の1A3は10進数で419と表される。
2進数を8進数に変換する方法
2進数を8進数に変換するには、2進数を下位ビットから3桁ずつ区切り、各区切りを8進数の数字に変換します。
例題1
2進数の110101を8進数に変換する。
下位ビットから3桁ずつ区切る: 110 101
各区切りを8進数に変換する: 110(2)=6(8), 101(2)=5(8)
区切りを順に並べると、65となる。
よって、2進数の110101は8進数で65と表される。
例題2
2進数の10111011を8進数に変換する。
下位ビットから3桁ずつ区切る: 10 111 011
各区切りを8進数に変換する: 010(2)=2(8), 111(2)=7(8), 011(2)=3(8)
区切りを順に並べると、273となる。
よって、2進数の10111011は8進数で273と表される。
8進数を2進数に変換する方法
8進数を2進数に変換するには、8進数の各桁を3桁の2進数に変換し、それらを繋げます。
例題1
8進数の65を2進数に変換する。
各桁を3桁の2進数に変換する: 6(8)=110(2), 5(8)=101(2)
2進数を繋げると、110101となる。
よって、8進数の65は2進数で110101と表される。
例題2
8進数の317を2進数に変換する。
各桁を3桁の2進数に変換する: 3(8)=011(2), 1(8)=001(2), 7(8)=111(2)
2進数を繋げると、011001111となる。
よって、8進数の317は2進数で011001111と表される。
[前回の続き]
2進数を16進数に変換する方法
2進数を16進数に変換するには、2進数を下位ビットから4桁ずつ区切り、各区切りを16進数の数字に変換します。
例題1
2進数の11010110を16進数に変換する。
下位ビットから4桁ずつ区切る: 1101 0110
各区切りを16進数に変換する: 1101(2)=D(16), 0110(2)=6(16)
区切りを順に並べると、D6となる。
よって、2進数の11010110は16進数でD6と表される。
例題2
2進数の101011110011を16進数に変換する。
下位ビットから4桁ずつ区切る: 1010 1111 0011
各区切りを16進数に変換する: 1010(2)=A(16), 1111(2)=F(16), 0011(2)=3(16)
区切りを順に並べると、AF3となる。
よって、2進数の101011110011は16進数でAF3と表される。
16進数を2進数に変換する方法
16進数を2進数に変換するには、16進数の各桁を4桁の2進数に変換し、それらを繋げます。
例題1
16進数のD6を2進数に変換する。
各桁を4桁の2進数に変換する: D(16)=1101(2), 6(16)=0110(2)
2進数を繋げると、11010110となる。
よって、16進数のD6は2進数で11010110と表される。
例題2
16進数の2B8を2進数に変換する。
各桁を4桁の2進数に変換する: 2(16)=0010(2), B(16)=1011(2), 8(16)=1000(2)
2進数を繋げると、001010111000となる。
よって、16進数の2B8は2進数で001010111000と表される。
練習問題
それでは、基数の変換に関する練習問題に挑戦してみましょう!
問題1 (易)
10進数の50を2進数に変換しなさい。
問題2 (中)
2進数の101101を10進数に変換しなさい。
問題3 (難)
16進数のA3Fを8進数に変換しなさい。
練習問題の解説
問題1
50 ÷ 2 = 25 余り 0
25 ÷ 2 = 12 余り 1
12 ÷ 2 = 6 余り 0
6 ÷ 2 = 3 余り 0
3 ÷ 2 = 1 余り 1
1 ÷ 2 = 0 余り 1
余りを下から順に並べると、110010となる。
よって、10進数の50は2進数で110010と表される。
問題2
1×25+0×24+1×23+1×22+0×21+1×20=32+0+8+4+0+1=45
よって、2進数の101101は10進数で45と表される。
問題3
16進数のA3Fを2進数に変換する。
A = 1010
3 = 0011
F = 1111
つなげると、101000111111
2進数を下位ビットから3桁ずつ区切る。
101 000 111 111
各区切りを8進数に変換する。
101 = 5
000 = 0
111 = 7
111 = 7
つなげると、5077
よって、16進数のA3Fは8進数で5077と表される。
まとめ
この記事では、基本情報技術者試験で重要な基数について解説しました。基数の種類、10進数・2進数・8進数・16進数の相互変換方法を理解することで、試験で出題される基数に関する問題を解くことができるようになります。
基本情報技術者試験では、基数の変換問題だけでなく、ビット演算や論理演算など、基数に関する様々な問題が出題されます。この記事で学んだ基数の知識を活かして、これらの問題にも積極的にチャレンジしてみましょう。