記数法の変換
10進法の数をほかの記数法に変換する方法と、逆にほかの記数法の数を10進法に変換する方法を説明します。
記数法とは
ふだんは10進法を使っています。10進法には、0、1、2、3、4、5、6、7、8、9の10個の数字があります。10進法の特徴は、ある数、たとえば57に10をかけると、位が1つ上がることです。つまり、その数を表すのに数字が1つ多く必要になり、570になります。
ほかの記数法もあります。たとえば8進法なら、数字は 0, …, 7 だけです。8進法には8という数字がないので、7 + 1 は 10 になります。16進法なら、数字は 0, 1, … 14, 15 です。9より大きい数字のかわりに文字を使うこともあるので、16進法の数字は 0, …9, A, B, C, D, E, F になります。
意外なことに、ふだんの生活でもほかの記数法に出会います。たとえば時刻です。秒と分は60進法で数えています。1日のどの瞬間も、60進法の3けたの数で書けます。左のけたから順に、時、分、秒を表します。数字の区切りにコロンを使うと、たとえば14:05:59という数になります。この時刻に1秒たすと、14:05:60ではなく14:06:00になることに注意しましょう。60は60進法の数字としては使えないからです。
10進法から2進法への変換
紙に70と書いてあるとします。この数を2進法に変換してみましょう。原理はかなり簡単で、変換したい数を0になるまで2で割り続け、そのたびに整数の割り算の余りを書きとめます。ほかの記数法、たとえば16進法に変換したいなら16で、6進法に変換したいなら6で割ります。実際には、次のようになります。
2進法で表した数は、割り算の余りでわかります。ただし、余りを上からではなく下から読みます。したがって、70を2進法で表すと1000110です。
2進法から10進法への変換
逆向きの変換は、次のようにします。1100010を10進法に変換してみましょう。こちらの向きのほうが簡単で、次の和を計算するだけです。
各項は x · 2i の形をしています。x はもとの2進数の数字で、i は右から順に1ずつ大きくなります。1100010を変換するので、この和は次のようになります。
1100010は7けたなので、2の指数は順に 6, 5, …, 1, 0 になります。累乗を計算してかけると、次の式が得られます。
この方法でうまくいく理由
10進法で考えてみましょう。ある数、たとえば7384の数字は、じつは何を表しているのでしょうか。4は一の位の数、8は十の位の数、3は百の位の数、7は千の位の数です。したがって、次のように書けます。
この式は、100、10、1のかわりに、いつも10の累乗を使う形に書きかえられます。100 = 1、101 = 10 などが成り立つので、次のように書けます。
10進法のどの数も同じように表せて、各項は x · 10i の形になります。x は 0 から 9 までの数字で、全部で10個あります。i は位を表す0以上の整数です。i = 0 なら一の位、i = 2 なら百の位を表します(102 = 100 だからです)。
では、7348を10進法から、えーと…10進法に変換してみましょう。ちゃんと意味があります。7348を10で割っていきます。
余りを下から読むと7348、つまり…同じ記数法に変換しようとした、もとの数にもどります。
2進法もまったく同じように表せます。各項は x · 2i の形になり、x は0か1の数字です。i はやはり位を表します。10で割り続けると10進法の各位の数がわかるのと同じように、2で割り続けると2進法の各位の数がわかるのです。
また、数を10で割った余りは、かならず区間 [0, 9] に入ることに注意しましょう。2で割った余りは、0か1のどちらかです。
ほかの記数法への変換
10進法から2進法に変換する方法は、ほかの記数法にもそのまま使えるほど一般的です。185を16進法に変換したいなら、16で割るだけです。
185は、16進法では (11, 9) という形になります。9より大きい「数字」のかわりには、ふつう文字を使い、10 = A, 11 = B, 12 = C, … とします。したがって、185は16進法でB9と書けます。
同じように、16進法の数B9を10進法に変換できます。