【基本・応用情報】基数変換とはなにか?計算方法を解説

基数変換の前にN進法を理解しよう

N進法とは、数の表現方法の1種です。

私達が普段使っている数え方は10進数。0から9までの、10種類の数字を使って、9の次に桁が上がります。

情報の世界では、2進数と16進数が多用されます。

2進数では0と1の2種類の文字を使って数え、16進数では 0~9の数字とA~Fまでの英字の16種類の文字を使って数えます。

このように、n進法というのは、桁が1つ上がるまでにn回カウントする、という数え方。このような数え方を位取り記数法といいます。

2進数・10進数・16進数を比べてみましょう。

このように、私達が普通に10数えたときには、2進数は「1010」に、16進数では「A」になっています。桁が1つ増えるタイミングは、使える数字を一通り使いきった時と考えると解りやすいでしょう。

異なる進数同士を相互に変換することを基数(進数)変換といいます。

一番簡単なのはWebで公開されている基数変換ツールを使うことですが、計算方法が知りたいという方はぜひ見ていってください。

2進数から10進数への変換方法

整数のみの場合

2進数の変換では、重み対応表を使います。

2進数の重み対応表

小数点を基準に、左方向に2の0乗、2の1乗、2の2乗…と、右方向に2の-1乗、2の-2乗…というように値が変化している表です。

それでは、この表を用いて2進数を10進数に変換してみます。


2進数で表された、「100110」という値があったとしましょう。

2進数の重み対応表に揃えるように並べ、それぞれを掛け算します。掛け算した値の合計値が、10進数に変換した値です。図で表すとこんな感じ。

このように、変換後の10進数は「38」になります。計算方法は意外とシンプルです。

小数を含む場合

小数を含んだ2進数、「11.101」という値があったとします。

やり方は先程の方法と同様で、2進数の重み対応表に合わせて書けばOKです。

2進数から16進数への変換方法

2進数から16進数に変換する時のポイントは、2進数の4ケタぶんが16進数の1ケタに対応しているということ。つまり、4ケタごとに分けられた対応表に当てはめればいいのです。

それでは、7ケタの2進数「1001101」を16進数に変換してみます。

このように、答えは4Dになる。「1,2,4,8」が繰り返される表に合わせて、掛け算した結果を小数点側から4個ずつまとめ、その合計値を16進数の値に変換しています。今回は7ケタなので、4つと3つの固まりに分けられます。

4ケタごとのまとまりは絶対に15以上になることはありません。図の、13=Dという部分のような、英字に対応する数字は暗記しておくと楽です。

10進数から2進数への変換方法

10進数から2進数へ変換する場合は、2で割りながらあまりを逆から並べる方法で行います。

例えば、10進数の「30」を2進数表記にしたい場合、

30を2で割って15あまり0、
15を2で割って7あまり1、
7を2で割って3あまり1、
3を2で割って1あまり1、
1を2で割って0あまり1

というように、商が0になるまで続けます。そして、出たあまりを逆から並べて答えは「11110」です。

小数を含む場合

小数を含む10進数から2進数を変換したい場合は、整数部分と小数部分を分けて計算する必要があります。

値に2を掛けて、出た答えの小数点以下のみを引き継いでまた2で掛ける…という計算方法で行います。そして、答えの小数点以下が0になった瞬間に計算が終了。それまでの答えの整数部分を順に並べていったものが2進数に変換された値です。

例えば、10進数の「0.125」を2進数に変換してみます。

このように、緑字部分が次の計算へと引き継がれています。最後の答えが1.0、つまり小数点部分がゼロなので、ここで計算終了。あとは、赤字で表されているように、それまでの整数部分を順番に並べていきます。

これで、小数点以下の計算が終了です。必要であれば、別で計算した整数部分とくっつければOKです。

2進数の無限小数

小数を含む10進数を2進数に変換する方法を紹介しましたが、実は、大体は無限小数になります。

こちらの図をご覧ください。

10進数で表された0.7という値を2進数に変換しようとしているのですが、「0.101100110011..」と無限に繰り返される小数になってしまいます。10進数は有限だからといって、2進数で有限になるとは限らないのです。

ちなみに、10進数の値を分数にしたときに、その分母が「2のn乗」で表せる数値なら、それは変換後に無限小数になりません。

0.25(1/4)は、4が2の2乗だから無限ではないね

10進数から16進数への変換方法

10進数から16進数に変換するには、「10進数から2進数への変換方法」と同じ要領で16で割り算していけばOKです。

例えば、10進数の「2019」を16進数にしたい場合、

2019を16で割って126あまり3、
126を16で割って7あまり14
7を16で割って0あまり7

というように、商が0になるまで続けます。ここでポイントなのが、「14」は16進数で「E」にあたるので、それぞれのあまりを変換して、逆から並べます。よって、答えは「7E3」となります。

10進数から2進数への変換方法と全く同じやり方なので、どちらのケースにも対応できるように慣れておきましょう。

計算方法のまとめ

「2進数から10進数へ変換」は、2進数の重み対応表を使う。

「2進数から16進数へ変換」は、4ケタごとにまとまっている表を使う。

「10進数から2進数への変換」は、ひたすら割り算だ!

「10進数から16進数への変換」も、ひたすら割り算だ!

コメント

  1. […] 【基本・応用情報】基数変換とはなにか?計算方法を解説hiyo-code.com2020.05.2… […]

タイトルとURLをコピーしました