基本情報技術者の勉強法 ~基数変換~
おはようございます。このブログは基本情報技術者に合格するための勉強法をまとめたブログです。今回の記事ではテクノロジの分野で出題される基数変換の勉強法についてお話していこうと思います。
基数変換とは
基数変換とは、ある基数で表した数値を、別の基数を用いて表すことです。
例えば、 2 進数で表された数字だと、人間には何を表しているのかがわかりにくいですよね? 2 進数よりも 10 進数で書かれたほうが、人間にとっては都合がいいです。
ここで行うのが基数変換です。2 進数で表された数値を 10 進数で表すようにします。
逆もまたしかりです。人間にとっては 10 進数のほうが都合がいいですが、コンピューターは訳が分からないのです。そのため、基数変換を行い、 10 進数を 2 進数に変える必要があるのです。
ここまででなんとなく基数変換のイメージができると思います。では、いったいどのようにして基数変換を行うのでしょうか?具体的な方法について見ていきましょう。
n 進数から 10 進数への変換
では、 n 進数から 10 進数への変換を行う場合で考えてみます。数値を 0 ~ n で表したのが n 進数です。
n 進数から 10 進数へ変換するには、 n 進数で表された数値の各桁に n の(桁数 - 1)乗をかけていき、全てを合計するだけです。
これが基数変換のやり方です。
具体的な例を出して計算をしていきます。
2 進数から 10 進数への変換
では、2 進数から 10 進数への変換を例にとってやってみましょう。
2 進数で表された「1111」があったとします。これに先ほどのやり方を当てはめていきましょう。各桁に 2 の(桁数 - 1)をかけて、合計します。
「1111」
= 1 × (2 の 3乗) + 1 × (2 の 2乗) + 1 × (2 の 1乗) + 1 × (2 の 0乗)
= 8 + 4 + 2 + 1
= 15
これで 10 進数に変換することができました。
2 進数の「1111」は 10 進数の 15 です。
16 進数から 10 進数への変換
次は 16 進数から 10 進数への変換を例にとってやってみましょう。
16 進数で表された「16FF」があったとします。この場合は、各桁に 16 の(桁数 - 1)をかけていき、合計すればいいのです。
「16FF」
= 1 × (16 の 3乗) + 6 × (16 の 2乗) + 15 × (16 の 1乗) + 15 × (16 の 0 乗)
= 4096 + 1536 + 240 + 15
= 5887
これで 10 進数に変換することができました。
16 進数の「16FF」は 10 進数の 5887 です。
10 進数から n 進数への変換
今度は 10 進数から n 進数へ変換する場合を考えてみましょう。
10 進数から n 進数への変換はとてもシンプルです。 10 進数で表された数値を n で割り切れなくなるまで除算するだけです。その余りを並べたものが n 進数になります。
具体的な例を出してみていきましょう。
10 進数から 2 進数への変換
先ほどと同じ例を使ってやっていきましょう。 10 進数の 15 を 2 進数に変換します。
15 ÷ 2 = 7 … 1
7 ÷ 2 = 3 … 1
3 ÷ 2 = 1 … 1
1 ÷ 2 = 0 … 1
割り切れなくなったので、終了です。
この余りを下から順に並べていきます。すると「1111」となると思います。これで証明ができました。
10 進数から 16 進数への変換
次に 16 進数での説明に入ります。先ほどの 5887 を使ってやっていきましょう。
5887 ÷ 16 = 367 … 15
367 ÷ 16 = 22 … 15
22 ÷ 16 = 1 … 6
1 ÷ 16 = 0 … 1
これを下から順に並べると、「16FF」となり、元に戻ります。
まとめ
- 基数変換は数値を異なる基数で表現する方法
- n 進数から 10 進数に変換するには、各桁 × n の(桁数 - 1)乗しすべてを合計する
- 10 進数から n 進数に変換するには、数値を n で割り、下から順に並べる