基数変換1 対応表を使う
「桁上がり」の考え方を理解して、基数の対応表を作成しよう!
基数変換を理解する最初の一歩として、基数の対応表を自分で書いてみましょう。
基数の対応表とは、10進数の1~16が、2進数、8進数、16進数ではどのように表現されるのかをまとめたものです。この表を丸暗記する必要はありません。2進数や8進数、16進数の考え方さえ理解すれば、いつでも自分で書けるようになります。
ここで重要なことは、桁上がりの考え方です。
まず最初に、普段使用している10進数の桁上がりから考えてみましょう。
10進数は0~9の数字を使って、数を表現しています。
10進数で0から順に9まで数えると、次は桁が1つあがり2桁となって10と表現しますね。
これが「桁上がり」です。
では、2進数ではどうでしょうか。
2進数は0~1の数字を使って、数を表現します。
0、1と数えたら、次に「2」を使うことはできませんので、桁を1つあげて10となります。
10の次は11、11の次は桁が上がり100、100の次は、101、110、111、次はまた桁が上がり1000、...というように数えていきます。
この考え方は、8進数や16進数でも同様です。
8進数は0~7を、16進数は0~9とA~Fを使用して数を表現します。
8進数は、0、1、2、...、7まで数えたら、桁が1つあがって10、さらに、11、12、...、17まで数えたら20、さらに、21、22、...、77まで数えたら、100になります。
16進数は、「15の次の数字は1桁あがる数え方」ですが、私たちは普段、10進数の中で物を数えているので、10~15に相当する1桁で表現する数字がありません。そこで10~15にA~Fという文字を割り当てて考えます。
つまり、0、1、2、...、8、9、A、B、...、E、Fまで数えたら、桁が1つあがって10になり、さらに11、12、...、19、1A、1B、...、1Fまで数えたら20になり、さらに、21、22、...、9F、A0、A1、...、FE、FFまで数えたら、100になります。
桁上がりがわかると、対応表の意味もわかりますね。
対応表を利用すると、2進数と16進数、2進数と8進数の相互変換が簡単にできるようになります。
では、2進数と16進数の相互変換をしてみましょう。
2進数と16進数の相互変換のツボ ~ 2進数の4桁は16進数の1桁で表すことができる!
2進数を16進数に変換するときは、2進数の値を下の桁から4桁ずつ区切り、それを16進数の数値に置き換えます。
では、2進数の10011011を16進数に変換してみましょう。
10011011を下から4桁ずつ区切ると、
1001 1011
です。
ここで、対応表を見てみましょう。
2進数の1001は16進数の9、2進数の1011は16進数のBです。
したがって、2進数の10011011は16進数の9Bとなります。
対応表があれば、簡単に変換できますね。
今度は、逆に16進数の9Bを2進数に変換してみましょう。
対応表を見ると、16進数の9は2進数の1001、16進数のBは2進数の1011です。したがって、16進数の9Bは2進数の10011011となります。
2進数と8進数の相互変換のツボ ~ 2進数の3桁は8進数の1桁で表すことができる!
2進数を8進数に変換するときは、2進数の値を下の桁から3桁ずつ区切り、それを8進数の数値に置き換えます。
では、2進数の110101100を8進数に変換してみましょう。
110101100を下から3桁ずつ区切ると、
110 101 100
です。
ここで、対応表を見ると、2進数の110は8進数の6、2進数の101は8進数の5、2進数の100は8進数の4です。
したがって、2進数の110101100は8進数の654となります。
今度は、逆に8進数の654を2進数に変換してみましょう。
対応表を見ると、8進数の6は2進数の110、8進数の5は2進数の101、8進数の4は2進数の100です。したがって、8進数の654は2進数の110101100となります。
2進数と16進数、2進数と8進数の相互変換の問題は、最初に対応表を作成しておくと、簡単に解くことができますね。
基数変換をするときは、2進数の桁数に注意しよう!
16進数と8進数の相互変換が簡単にできることを確認してきました。では、ここで8進数の123を2進数に変換してみましょう。
対応表を見ると、8進数の1は2進数の1、8進数の2は2進数の10、8進数の3は2進数の11です。ここで重要なのは、2進数を8進数に変換したときは3桁ずつ区切ったわけですから、8進数から2進数に変換するときも3桁に置き換える必要がある、ということです。
単純に変換した数値を並べると、
1 10 11
ですが、これでは正しい2進数の値になりません。1は001、10は010、11は011というように、必ず3桁にする必要があります。
3桁にした数値を並べると、
001 010 011
となり、左端の2つの0を省略して、8進数の123は、2進数の1010011に変換できました。
では16進数の57を2進数に変換すると?
0101 0111 → 1010111
ですね。
16進数は4桁に、8進数は3桁に、それぞれ区切る、ということを覚えておきましょう。
なぜ、16進数が4桁で8進数が3桁なのかは、16=24、8=23だからです。コンピュータの計算は2進数を中心に組み立てられているんですね。
2進数と16進数、2進数と8進数の基数変換の問題を解いてみよう!
2進数と16進数、2進数と8進数の相互変換の問題が出題されたときは、最初に10進数の1~16までの表を作成すると、その後の計算がスムーズになります。
それでは、実際に出題された問題を解いてみましょう。
平成21年秋 問64
8進数の55を16進数で表したものはどれか。
ア 2D イ 2E ウ 4D エ 4E
正解は...
正解 ア
この問題では、8進数の55を2進数に変換し、その値を16進数に変換します。
8進数の55 → 2進数の101101
表を作成すれば、この変換はすぐにできますね。
次に、2進数の101101を下から4桁ずつ区切ります。
0010 1101
表を確認すると、
0010 → 2
1101 → D
したがって、アの2Dが正解です。
※10と1101としても同じですが、16進数は4桁にする、ということを習慣にしておきましょう。