ITパスポート家庭教師のつぶやき -5ページ目

8進数から16進数への基数変換 つづき

>疲れたので、簡単な方法の説明は次回に気が向いたら。。

と書いて数年経ち今更ですが簡単な方法をご説明いたします。


引き続き、この問題を簡単な方法で解きます。

=================================
平成21秋
=================================
【問64】8進数の55を16進数で表したものはどれか。
   
     ア 2D  イ 2E  ウ 4D  エ 4E


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


簡単な方法は


8進数を2進数にしてから


2進数を16進数にします。


ではやってみます。



【8進数を2進数】


8進数は2進数3桁で表現できます。


つまり、2進数の見出しを書き出してみると


3桁目 2桁目 1桁目
 4    2    1 (2進数見出し)


ですよね。


各桁の値を合計すると


4+2+1=7


つまり、2進数の3桁で表現できる数は


0を入れると8となります。


よって


8進数の1桁は2進数3桁で表現できるんです。


証明してみますね。


たとえば、8進数のMAX値の7


2進数の見出しを書き出して2進数に変換してみます。


3桁目 2桁目 1桁目
 4    2    1 (2進数見出し)
 1    1    1 (7の2進数)


8進数の7は、2進数では111となります。


ほらね


2進数が3桁あれば8進数の1桁を表現できるんです。


ちなみに8進数で8は10となりますからね。


問題の8進数55を2進数にしますね。


2桁目の5を同じように2進数の3桁で表現して


3桁目 2桁目 1桁目
 4    2    1 (2進数見出し)
 1    0    1 (5の2進数)


101となります。


そこに、1桁目の5を2進数の3桁で表現して繋げれば


3桁目 2桁目 1桁目
 4    2    1 (2進数見出し)
 1    0    1 (5の2進数)


101101(2進数)


と、いとも簡単に8進数から2進数に変換できます。


わかりましたか?


8進数が何桁であっても、この方法で変換できます。


つぎに2進数から16進数に変換します。



【2進数を16進数】


8進数は2進数3桁あれば表現できる仕組みと同じで


16進数は2進数4桁あれば表現できちゃうんです。


つまり、2進数を4桁ごとに区切って


(足りない場合は左から0を追加して4桁にします)


4桁の2進数を16進数にすればいいんです。


では、やってみます。


101101(2進数)


4桁に区切ると


10 と 1101 ですね。


10は4桁に足りてないので、0010になります。


そうすると


0010 1101


つぎに4桁毎の2進数を16進数に変換します。


2進数の見出しを書き出し10進数の値をみて、そのまま16進数に変換しちゃいます。


4桁目 3桁目 2桁目 1桁目
 8    4    2    1 (2進数見出し)
 0    0    1    0 (0010)


10進数にするには縦に掛けて合計でしたね。


4桁目 3桁目 2桁目 1桁目
 8    4    2    1 (2進数見出し)
 ×   ×    ×   ×
 0    0    1    0 (0010)
 =   =    =   =
 0    0    2    0


合計は2ですね。


2を16進数で表すと、そのまま2ですね。


つぎの値も同じようにやってみます。


4桁目 3桁目 2桁目 1桁目
 8    4    2    1 (2進数見出し)
 1    1    0    1 (1101)


10進数にするには縦に掛けて合計でしたね。


4桁目 3桁目 2桁目 1桁目
 8    4    2    1 (2進数見出し)
 ×   ×    ×    ×
 1    1    0    1 (1101)
 =   =    =    =
 8    4    0    1


合計は8+4+0+1=13ですね。


13を16進数にすると


10はA、11はB、12はC、13はDですから


10進数の13は、16進数でDとなります。


あとは、2とDを繋げれば完成


2Dとなり。


答えはアとなります。



いかがでしょうか?


参考書では書かれていない方法が間違いはありません。


この考えで十分対応できますよ。