AOBA's Information Processing Education
1997/12/07
注意1:このページは、回線を切断した後でゆっくりご覧になってください(テキストを印刷する場合は、その取り扱いに注意してくださるようお願いします)。
注意2:背景が白地の画面を長時間見つめていると頭が痛くなってしまいますので、ここは背景をグレーにしています。
基数変換とは、n進数で表現されたある値を、nとは別なm進数に置き換えることを言います。先週(第5回講座)、2進数から10進数、16進数から10進数に変換する手順を解説しましたが、これも基数変換の一つです。
今週は先週とは逆に、10進数から2進数や16進数に変換する手順、および2進数と16進数の相互変換について解説します。まずは10進数から2進数に変換する手順についてです。
10進数から2進数への変換は、以下のような機械的な手順によって行えます。「10進数から2進数の変換手順」
手順:元の10進数を商が0になるまで2で割ってゆき、その剰余を逆にたどる。
なんのことやら分からないと思いますので、次の図を参照してください。この例は10進数の141を2進数に変換する例です。
![]()
よって、141=(10001101)2です。
10進数から2進数への変換は、商が0になるまで2で割ってゆきました。それと同じように、10進数から16進数への変換も、商が0になるまで16で割ってゆきます。「10進数から16進数の変換手順」
手順:元の10進数を商が0になるまで16で割ってゆき、その剰余を逆にたどる。
ただし、16進数では10〜15も一桁の数です。この点に注意してください。
(注)
10=(A)16,11=(B)16,12=(C)16,13=(D)16,14=(E)16,15=(F)16以下に、10進数の141を16進数に変換する例を示します。
![]()
よって、141=(8D)16です。
さて次は、2進数と16進数の相互変換についてです(こっちの方が簡単)。
先週の最後に行った演習を再度以下に示します。「第5回講座の演習」
以下の二つの値を10進数に変換せよ。
設問1 (10110010)2
設問2 (B2)16
これらの解答は、どちらも178でした。つまり、(10110010)2と、(B2)16は同じ値なのです。
「2進数から16進数の変換手順」
手順1:2進数で表現された値を右から4桁づつ区切り、それぞれを10進数に変換する。
手順2:変換された10進数をそれぞれ16進数に変換する。
![]()
よって、(10110010)2=(B2)16です。
今度は逆に、16進数から2進数への変換です。「16進数から2進数の変換手順」
手順1:16進数で表現された値を1桁づつ、それそれを10進数に変換する。
手順2:変換された10進数をそれぞれ、(4桁の)2進数に変換する。
![]()
よって、(B2)16=(10110010)2です。
2進数と16進数の相互変換が慣れてくると、10進数への変換を間に入れなくてもできるようになりますよ。「演習」
10進数の227を2進数と16進数に変換せよ。
演習の解答 2進数:(11100011)2 16進数:(E3)16
答えを求める方法は色々ありますが、ここではその一例を示します。
まず10進数の227を16進数に変換します。
227/16=14・・・・3=(3)16
14/16= 0・・・14=(E)16したがって、227=(E3)16です。
次に、16進数の(E3)16を2進数に変換します。
(E)16=14=(1110)2
(3)16= 3=(0011)2したがって、(E3)16=(11100011)2です。
簡単簡単(でしたでしょうか?)。ではまた来週。