基数変換1 対応表を使う


「桁上がり」の考え方を理解して、基数の対応表を作成しよう!

基数変換を理解する最初の一歩として、基数の対応表を自分で書いてみましょう。

radix_1.png

基数の対応表とは、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桁にする、ということを習慣にしておきましょう。