前書き

 前回は進数表現とりわけ2進数と10進数の概要と演算について解説しました。今回は基数変換というものについて解説していきます。

 

 

 

 

 

 進数表現の中でも基数表現と呼ばれるものは基本情報技術者でもほぼ毎回出題されるほど重要なスパンを占めております。基数表現とは2進数から10進数へまたは10進数から2進数へとある進数表現から別の進数表現に変換することを指します。基数表現で重要なポイントとされるのは10進数を基準として考えることです。10進数からn進数に基数変換する場合、10進数からnを除算すれば求めることができます。10進数から2進数に変換する場合は、10進数から2を除算してその商が1になるまで繰り返すだけでいいです。下の例題の10進整数73は一回目に2で割ると商は36で余りは1、一回目の商36をまた2で割ると商は18で余りは0、という計算を商が1になるまで繰り返し、最後の商の1と最後に計算した商から順に記述していくと、10進数73は2進数で表現すると1001001という結果が求められます。

 

 

 逆に2進数から10進数へ基数変換するときは、2進数の各桁に重みと呼ばれる数値を乗算してその合計を求めます。n進数における各桁の重みはnのべき乗(以下べき乗は「^」で表現)であり、nの0乗はどの進数表現でも1となります。図2の100100を10進数に基数変換するときは、1×2^2=4、1×2^5=32、4+32=36の手順で計算すると、10進数36という結果が求められます。

 

 

 2進数への変換は10進整数だけでなく10進小数も変換することができます。10進小数xをn進数に変換する場合、10進整数xの小数部×nで求めた積の整数部がn進数で表現したものとなります。これを小数部が0になるまで求めた結果が10進小数xのある桁のn進表現となります。つまり2進数への変換の場合、10進整数xの小数部×2で求めた積の整数部が2進数となります。10進小数0.4375を2進表現にすると、最初は0.4375×2=0.875で2進小数の小数点第一位には0、2回目は0.875×2=1.75で2進小数の小数点第二位には1、これを小数部が0になるまで繰り返して求めた2進小数が0.0111となります。

 

 

 ところが、10進小数でも2進表現にできないものがあります。下の図の10進小数0.1は同じように小数部×2で計算を繰り返しても、10進の小数部が0になることはありません。このように10進小数が必ずしも2進数に変換できるとは限りません。

 

 

 

 

 

 

 

後書き

 今回は進数表現でも重要な基数変換について解説しました。今回のポイントとしては10進数を中心に考えること、整数だけでなく小数も基数変換できること、小数の基数変換の中にはしようとすると無限ループになってしまうものもあるというのをおさえていただければ幸いです。次回は進数表現の第三回として、シフト演算について解説していきます。

 

 

参考文献

(1)日髙哲郎編(2008年)「新しい基本情報技術者【午前】問題集」

   日本経済新聞出版社