✖

記数法の変換

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で割ります。実際には、次のようになります。

70÷2=35⟶0(余り)35÷2=17⟶117÷2=8⟶18÷2=4⟶04÷2=2⟶02÷2=1⟶01÷2=0⟶1

2進法で表した数は、割り算の余りでわかります。ただし、余りを上からではなく下から読みます。したがって、70を2進法で表すと1000110です。

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

逆向きの変換は、次のようにします。1100010を10進法に変換してみましょう。こちらの向きのほうが簡単で、次の和を計算するだけです。

11000102=1⋅26+1⋅25+0⋅24+0⋅23+0⋅22+1⋅21+0⋅20

各項は x · 2i の形をしています。x はもとの2進数の数字で、i は右から順に1ずつ大きくなります。1100010を変換するので、この和は次のようになります。

11000102=1⋅26+1⋅25+0⋅24+0⋅23+0⋅22+1⋅21+0⋅20

1100010は7けたなので、2の指数は順に 6, 5, …, 1, 0 になります。累乗を計算してかけると、次の式が得られます。

11000102=64+32+2=98.

この方法でうまくいく理由

10進法で考えてみましょう。ある数、たとえば7384の数字は、じつは何を表しているのでしょうか。4は一の位の数、8は十の位の数、3は百の位の数、7は千の位の数です。したがって、次のように書けます。

7384=7⋅1000+3⋅100+8⋅10+4⋅1

この式は、100、10、1のかわりに、いつも10の累乗を使う形に書きかえられます。100 = 1、101 = 10 などが成り立つので、次のように書けます。

7384=7⋅103+3⋅102+8⋅101+4⋅100

10進法のどの数も同じように表せて、各項は x · 10i の形になります。x は 0 から 9 までの数字で、全部で10個あります。i は位を表す0以上の整数です。i = 0 なら一の位、i = 2 なら百の位を表します(102 = 100 だからです)。

では、7348を10進法から、えーと…10進法に変換してみましょう。ちゃんと意味があります。7348を10で割っていきます。

7348÷10=734⟶8(余り)734÷10=73⟶473÷10=7⟶37÷10=0⟶7

余りを下から読むと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(余り)11÷16=0⟶11

185は、16進法では (11, 9) という形になります。9より大きい「数字」のかわりには、ふつう文字を使い、10 = A, 11 = B, 12 = C, … とします。したがって、185は16進法でB9と書けます。

同じように、16進法の数B9を10進法に変換できます。

B916=11⋅161+9⋅160=11⋅16+9=185