コンピュータは0と1しか使わないって聞いたんですけど、本当ですか?
本当だよ。コンピュータの中は電気が流れている(1)か、流れていない(0)かの2つで表しているんだ。電球をイメージするとわかりやすいよ。
2進数は「電球のON/OFF」
私たちがふだん使う数は、0〜9の10種類の数字を使う 10進数 です。9の次で桁が上がって10になります。
一方、2進数 は0と1の2種類だけを使い、1の次で桁が上がります。
| 10進数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|---|
| 2進数 | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 |
2進数 → 10進数:「位の重み」を足す
10進数では、位の重みが右から 1、10、100、1000…と 10倍ずつ 大きくなります。2進数では右から 1、2、4、8、16…と 2倍ずつ 大きくなります。
2進数 → 10進数 は、1が立っている位の重み(1・2・4・8・16・32・64・128…)を足すだけ。
位の重み 1・2・4・8・16・32・64・128 は、何度も声に出して覚えてしまおう。これだけで多くの問題がスラスラ解ける。
10進数 → 2進数:2で割って余りを下から読む
10進数を2進数にするには、2で割り続けて、余りを下から順に並べます。
慣れてきたら、大きい重みから引いていく方法も便利です。13 = 8 + 4 + 1 なので、8・4・1の位が1 → 1101。
16進数:4ビットずつまとめる
2進数は桁が長くなって読みにくいので、16進数 もよく使われます。0〜9に加えて A〜F(10〜15) の16種類の記号を使います。
| 10進数 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|
| 16進数 | A | B | C | D | E | F |
2進数の 4桁がちょうど16進数の1桁 に対応します(4桁の2進数は0〜15の16通り)。
2進数 10111110 を16進数にする
- 右から4桁ずつ区切る:
1011|1110 - それぞれ10進数にする:1011 = 11、1110 = 14
- 16進数の記号にする:11 = B、14 = E → 答えは BE
16進数を10進数にするときは、位の重みが 1・16・256… になります。例えば16進数の 2A は、2 × 16 + 10 × 1 = 42 です。
ビットとバイト
- ビット(bit):0か1かを表す、情報の最小単位。電球1個分
- バイト(Byte):8ビット = 1バイト
電球が1個なら ON/OFF の 2通り、2個なら 4通り、3個なら 8通り…と、1個増えるたびに2倍になります。
nビットで表せるのは 2n 通り
- 4ビット → 16通り
- 8ビット(1バイト)→ 256通り
- 16ビット → 65,536通り
「8ビットで表せる最大の数」は 255(0〜255 の256通り)。「何通り?」と「最大値は?」で答えが1ずれるので、問題文をよく読もう。