2進法と10進法の変換

炉辺夜話情報科学編第3夜

2進数は,情報科学/工学の基礎に必ず出てきて,読者を悩ませる.そもそも,これが数の表記法の問題であることの理解が難しいようだ.しかも,2進数の 1 と 10進数の 1 は,同じ“1”という数字を使うからややこしくなる.数と数字が直感的に結びついているので,2進数の“11”がどうしても 3 には見えない.ましてや,2進表記を 10進表記に変換する方法,あるいはその逆,は覚えていても,何故その計算で変換ができるのか,説明できる人は余りいないのではなかろうか.

2進数を 10進数にするには,通常,各桁を 10進表記に直して足しあげるという計算をする.

1101

= 1*1011 + 1*1010 + 0*101 + 1*100

2進数

(1)

 

= 1*23 + 1*22 + 0*21 + 1*20

10進数

(2)

 

= 1*8 + 1*4 + 0*2 + 1*1

10進数

(3)

 

= 8 + 4 + 0 + 1

10進数

(4)

 

= 13

10進数

(5)

という計算である.この内,(1)式の存在を殆ど認識していない人が多いように思える.(1) の左辺は,算用数字の表記法で,「桁」を使って大きな数を表している.桁を繰り上げるときの単位が「底」で,これを 10 としたのが 10進法である.例えば,(5)式の“13”は,

13

= 1*101 + 3*100

10進数

(6)

という数を表している.

ついでながら,漢数字では,“十三”であって,十という数を,一から九の他に設けており,桁の概念はない.もっとも,漢数字にも,(6) 式の掛け算に相当するものはある.即ち,“百二十三”などの“二十”の部分である.漢数字は,大きな単位から小さな単位の順に並べるが,それが逆転しているところ(“二十”)は,積を表している.つまり,漢数字では,桁ではなく,その桁を表す漢字を用意しているのである.

底の変換に話を戻すと,(1) と (2) が同じ数を表していることを理解することが肝心である.これが分かれば,10進数の“13”の 2進数表記を求める次のような計算も容易に理解できるはずである.

13

= 1*101 + 3*100

10進数

(6)

 

= 1*10101 + 11*10100

2進数

(7)

 

= 1*1010 + 11*1

2進数

(8)

 

= 1010 + 11

2進数

(9)

 

= 1101

2進数

(10)

2進表記から 10進表記への変換の手順と全く同じである.ただし,この場合は,各桁の数字 0〜9 に対応する 2進表記を覚えていなければならない.桁が多くなった場合の指数も同様である(兆なら 12 の 2進表記が必要である).2進表記から 10進表記への変換でこのような面倒がないのは,底が大きくなる方向への変換だからである.つまり,2進数の格桁には,0 と 1 しかなく,これはそのまま 10進表記になっているのである.この 2進表記から 10進表記への暗黙の変換を意識に載せないと,この計算は理解できない.

数を表記する場合,算用数字の桁の考え方から自然に現れる方法に,数を繰り返し底で割り算して,その余りを逆順に並べる,というのがある.

13/2

= 6 … 1

10進数

(11)

6/2

= 3 … 0

10進数

(12)

3/2

= 1 … 1

10進数

(13)

1/2

= 0 … 1

10進数

(14)

 

余りを逆に並べて 1101

2進数

(15)

10進数を,その底である 10 で割っていけば,各桁の数字が余りとなって現れる,という何の変哲もない計算の応用である.

13/10

= 1 … 3

10進数

(16)

1/10

= 0 … 1

10進数

(17)

 

余りを逆に並べて 13

10進数

(18)

この計算を 2進数に適用するのだが,実際の計算は 10進数で行う点だけが,違う.同様に,2進数を 10進表記で表すのに応用することもできる.

1101/1010

= 1 … 11

2進数

(19)

1/1010

= 0 … 1

2進数

(20)

 

余りを 10進表記で,逆に並べて 13

10進数

(21)

この場合,除数 10 が 2進表記で 4桁になるのが煩わしく,各余りも改めて 10進表記にしなければならない.10進数を 2進表記で表すときは,除数 2 は底 10 よりも小さい.従って,割り算は易しく,余りは一桁,且つ除数 2 よりも小さい.つまり,そのまま返還後の表記である 2進表記に使えるのである.この点を理解しないと,この種の計算法は,容易に記憶から消えてしまうだろう.

2進表記と 10進表記の変換が,変換の向きによって,何故計算法が違うのか.学生から,このような疑問が出ないとしたら,その授業は失敗であった,と考えるべきである.