コンピューターサイエンス入門:理論編
2進数から10進数への変換
この回でやること
2進数の桁の重みを読み解き、10進数の値と表せる範囲を確かめます。
- 読む 約 7 分
- 最後にクイズ 1 問
「1101」を見せられても、13 だとは言えない
コンピュータの中では、電気の状態を二択として扱い、数も文字も色も 0 と 1 の並びで表します。この並びを読めると、この先のビット演算やメモリの話でも、値の意味を追えるようになります。
10 進数を読めるのは、一の位、十の位、百の位という桁の重みを知っているからです。2 進数でも、知るべきものは同じ「桁の重み」です。並びを丸ごと暗記する必要はありません。
桁ごとに重みが決まっている
10 進数の 253 は 2 × 100 + 5 × 10 + 3 × 1 に分解できます。右端から 1、10、100 と、左へ行くたびに重みが 10 倍になります。
2 進数はここが 2 倍ずつになるだけです。右端から 1、2、4、8、16 と続きます。2 進数の1桁を1ビットと呼びます。
| 2 進数 | 1 が立っている桁の重み | 10 進数 |
|---|---|---|
0001 | 1 | 1 |
0101 | 4 + 1 | 5 |
1010 | 8 + 2 | 10 |
1101 | 8 + 4 + 1 | 13 |
1111 | 8 + 4 + 2 + 1 | 15 |
0 の桁は、足さなくてよい
1101 の右から2桁目は 0 です。重み 2 を掛けても 0 なので、合計に影響しません。「1 が立っている桁の重みだけ拾って足す」と、8 + 4 + 1 = 13 になります。
桁が増えても手順は同じです。10110 なら 16 + 4 + 2 = 22。重みの位置を1つずらすと、答えは倍か半分になるので、右端から対応を確かめます。先頭の 0 は重みを足さないため、001101 も 1101 と同じ値です。
桁が1つ増えると、通り数は2倍になる
4ビットなら 0000 から 1111 まで、0から15の16通りです。ビットが1つ増えるたび、先頭に 0 と 1 の二択が加わり、通り数が倍になります。8ビットは256通り、16ビットは65536通りです。符号なしの8ビットで表せる最大値は、256ではなく255です。0も1通りに数えるためです。
覚え方 「1バイト = 8ビット = 256通り」は、文字コードや色の値を読むときにも使います。
例題で確かめる
センサーの記録に、2進数で 10010 とあります。10進数の値を読み解きます。右からの重みを並べると、次の対応になります。
プレーンテキスト
桁 1 0 0 1 0
重み 16 8 4 2 11 があるのは重み16と2の場所です。16 + 2 = 18 なので、記録された値は18です。ほかの桁は0を掛けるため、合計には加わりません。