WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

基数変換

      2014/11/17

基数について

私たち人間は普段数字を数えるときに10進数を使っています。
10進数では0-9の数字を使って数をかぞえ、1の位が10になったときに桁が上がります(※例えば1,2,3,4,5,6,7,8,9と数をかぞえて次の10で桁がひとつ増えます)。

10進数とは別に2進数や8進数といった数え方があります。
2進数では1の次は2ではありません。2進数では2が桁があげる数字(桁の重み付け)となるので1の次は桁が上がっては10になります。
8進数でも同様に7の次は8ではなく、10になります。

このようにn進数において桁の重み付けとなる数字nを基数と呼びます。
2進数なら2が基数であり、10進数なら基数は10です。

基数変換とは

2進数の10を10進数に変換すると2になります。
このように、ある進数で表現されている数を別の進数で表し直すことを基数変換といいます。

基数毎の各桁の重み付け

n進数の各桁の重みは、小数点を基準に左へn0→n1→n2→n3・・・と増えていき、小数点を基準に右にn-1→n-2→n-3・・・・と減っていきます。

n進数の重み対応表
n2 n1 n0 .(小数点) n-1 n-2 n-3

n進数を10進数に変換する

この重み対応表を利用してn進数を10進数に変換することができます。

例えば2進数1001.101を10進数に変換すると以下のように各桁の重みをかけてそれらを足して行くと

23    22     21   20     2-1    2-2   2-3
8  +  0  +  0  +  1  .  0.5 +  0  + 0.125 = 9.625
 

で1001.101は10進数では9.625だということがわかります。
※20は1になります

10進数をn進数に変換する

先ほどの例とは逆に10進数10.4375を2進数に変換してみましょう。
10進数からn進数へ変換するときは整数部分と少数部分を分けて計算します。

まず整数部分を計算します。
下図のように整数部分はnで商が0になるまで割って行き、余りを下から並べて行けば割り出せます。この場合は整数部分は10なので、10割る2を商が0になるまで繰り返して行きます。

10進数をn進数へ変換整数

商が0になったときに余りを下から並べると、10進数の9は2進数では1010であることがわかります。

続いて少数部分を計算します。少数部分は逆に掛け算を使います。
下図のように少数部分にnを掛けます。その結果の少数部分を受け継いでまたnを掛け、これを少数部分が0なるまで繰り返します。

10進数をn進数へ変換小数2

少数部分が0になったときに整数部分を上から順に並べると、10進数の0.4375は2進数では0.111であることがわかります。

結果、整数部分と少数部分を合わせて、10進数の10.4375は2進数では1010.111であるということがわかりました。

 - 数学 , ,