2進法で表された数を10進法の表記に変換したり、あるいはその逆方向に変換したりするにはどうすればよいか考えよう。
1101(2進) を10進に変換してみる。
10進法では、下のケタから順に一のケタ、十のケタ、百のケタ、千のケタ…となっているが、
2進法では、次のようになっている:
2進の一番下のケタは 1のケタ
次のケタは、 2のケタ
その次は、 4のケタ
その次は、 8のケタ
… 16 …
32
64
128
ケタが進むごとに2倍になるから、下から n 番目のケタは 2 の (n-1) 乗のケタになっている。
1101(2進) は、1のケタに1がある
2のケタに0がある
4のケタに1がある
8のケタに1がある
1+4+8 = 13
よって、1101(2進) = 13(10進) であることがわかる。
ケタ数が少ない時はこの方法で変換するのが楽。
1101を1ケタずつ上から下に向かって書いてみる。
1
1
0
1
次のような計算を行う:
2進 10進
1 ←この1をそのまま右に書くと 1 ← この1を2倍して
1 ←この1を足すと 3 ← この3を2倍して
0 ←この0を足すと 6 ← この6を2倍して
1 ←この1を足すと 13 ← これが答
まず、1は2進でも10進でも1だから、
1(2進)=1(10進)
である。
この両辺を2倍して1を足してみる。
右辺については普通に2倍して足せばよろしい。
左辺についてだが、2倍するには、2進法では左に1ケタずらせばよいので、結局、
左に1ケタずらしたあと、1加えれば2倍して1加えたことになる。
1を左に1ケタずらすと10(2進)、それに1加えると11だから、
11(2進)=3(10進)
となる。
今度は両辺を2倍してみる。今度は左辺については左に1ケタずらすだけでよいので、
110(2進)=6(10進)
となる。同様にして、今度は2倍して1加えると 1100 + 1 で、
1101(2進)=13(10進)
になる。これで2進の1101を10進の13に変換できた。
まとめると、次のようになる:
最初は 1 1(2進)=1(10進)
両辺×2+1 11(2進)=3(10進)
両辺×2+0 110(2進)=6(10進)
両辺×2+1 1101(2進)=13(10進)
↑
この部分にタテに並んでいる数を横に並べかえると 1101。
これを見ると、さきほど説明した2進10進変換と同じ計算になっている。
2進表記に変換したときの各ケタの数字を求めることができればよい。 しかし、いきなり2進数について考えるのは難しいかも知れないので、 まず10進表記では各ケタの数字がどのようにして得られるかを考えてみる。
例として、213 という10進数を考える。213 の最下位は 3 だが、これは、213を10でわった余りである。 一方、最下位をのぞいた残り、つまり、21 は 213を10でわった商である。 このことからわかるように、10で割った余りと商とを考えることにより、数を最下位のケタの数とそれ以外とに分けることができる。 さらに、商 21 を再び10で割ってみると、余りが1で商が2となる。 このように、10で割って余りと商を求めることを繰り返すことにより、各ケタの数を下位から順々に求めて行くことができる。
10で割った余り
213 ─────────→ 3
│
商│
↓ 10で割った余り
21 ─────────→ 1
│
商│
↓ 10で割った余り
2 ─────────→ 2
│
商│
↓
0
これと同じことを2進で考える。
再び 213 を例とする。 10で割るかわりに2で割って余りを求めることを繰り返せば、2進表記にした際の各ケタの数が求まるはずである。
以下同様に繰り返せば、すべてのケタが求まる。 商が0になるまで繰り返せば終了。
2で割った余り
213 ─────────→ 1
│
商│
↓ 2で割った余り
106 ─────────→ 0
│
商│
↓ 2で割った余り
53 ─────────→ 1
│
商│
↓ 2で割った余り
26 ─────────→ 0
│
商│
↓ 2で割った余り
13 ─────────→ 1
│
商│
↓ 2で割った余り
6 ─────────→ 0
│
商│
↓ 2で割った余り
3 ─────────→ 1
│
商│
↓ 2で割った余り
1 ─────────→ 1
│ ↑ここに並んだ数を下から順に
商│ ひろって並べると
↓ 11010101となる
0
よって、213(10進) = 11010101(2進)
上のような図を毎回描くのは大変なので、次のようにすればよい:
213 奇数だから → 1
106 偶数だから → 0
53 ……同様…… 1
26 0
13 1
6 0
3 1
1 1
↑ここに並んだ数を下から順に
ひろって並べると
11010101となる
※注意: 下から順に拾うべき所で上から順にやってしまう人がよくいる。
上の手順は、以下のように図解することもできる:
213 = 1 1 0 1 0 1 0 1
↑ ↑ ↑
└───────────┘ └─ 213を2で割った余り1
213を2で割った商106
106 = 1 1 0 1 0 1 0
↑ ↑ ↑
└─────────┘ └─ 106を2で割った余り0
106を2で割った商53
53 = 1 1 0 1 0 1
↑ ↑ ↑
└───────┘ └─ 53を2で割った余り1
53を2で割った商26
…以下同様。
上で示した手順のかわりに次のようにやってももちろん同じ事である:
213
÷2 106 余り 1
53 余り 0
26 余り 1
13 余り 0
6 余り 1
3 余り 0
1 余り 1
0 余り 1 ← 商が0になるまで続ける!
↑下から順に拾って並べると
11010101
よって、213(10進) = 11010101(2進)
しかし、このようにする場合、注意が必要。間違って次のようにしてしまう人がよくいる:
213
÷2 106 余り 1
53 余り 0
26 余り 1
13 余り 0
6 余り 1
3 余り 0
1 余り 1
← 商が0になるまで続けていない!
↑下から順に拾って並べると
1010101 ← これはマズイ答。
例年、試験でこの間違いを多く見かける。