数値と文字のデジタル表現
Binary & Text2進法 ― 0と1だけで数を表すしくみ
パソコン基礎講座の電源の回で見た電源マークが0と1の組み合わせで表されていたように、コンピュータの内部では、あらゆる情報が0と1という2種類の数字だけで表現されています。この0と1だけを使って数を表す方法を2進法(0と1の2種類の数字だけを使って数を表す方法)、2進法で表された数を2進数と呼びます。
2進数は0と1しか使わないため、桁が大きくなりがちです。たとえば、ふだん使っている10進法(0から9までの10種類の数字を使う、日常的な数の数え方)の7は、2進法では111と表されます。
Windowsの電卓アプリには、数の表し方を切り替えられる「プログラマー」モードがあります。切り替えの選択肢には、次の4つが用意されています。
| 略号 | 読み方 | 内容 |
|---|---|---|
| HEX | ヘックス | 16進数(Hexadecimal)。0〜9とA〜Fの16種類の文字で数を表す |
| DEC | デック / デシマル | 10進数(Decimal)。ふだん使っている、0〜9の10種類の数字で数を表す |
| OCT | オクト | 8進数(Octal)。0〜7の8種類の数字で数を表す |
| BIN | ビン | 2進数(Binary)。0と1の2種類の数字で数を表す |
電卓アプリで同じ数を4つのモードに切り替えて見比べてみると、同じ量を表しているのに、桁数や見た目がまったく違うことが実感できます。手元のパソコンで、実際に試してみましょう。
文字についても、コンピュータの内部では数値に置き換えられています。アルファベットや数字、記号のひとつひとつに番号を割り当てて2進数で表現する規格をASCIIコード(アルファベット・数字・記号を数値に対応させた、文字コードの規格のひとつ)と呼びます。「A」という文字も、コンピュータの内部では、ある決まった数値として2進数で保存されているのです。
都道府県を2進法で表すと? ― 何ビットあれば足りるか
日本の都道府県は、1都1道2府43県、あわせて47あります。この47個を、すべて2進数の組み合わせだけで区別しようとすると、何桁(何ビット、2進数の1桁を表す単位)必要になるでしょうか。
2進数は1桁増えるごとに、表せる組み合わせの数が2倍になります。1桁(1ビット)なら2通り、2桁なら4通り、3桁なら8通り……というように、nビットあれば2のn乗通りを表せます。6ビットまで増やすと、2の6乗、つまり64通りを表せるようになります。64は47以上なので、都道府県はすべて6ビットあれば区別できる計算になります。
64通りのうち、実際に使うのは47通りだけなので、17通り分が余ります。この余った組み合わせは、エラーフラグ(データが正しく読み取れなかったことを示す目印)などに使うことができます。
理論上は6ビットで足りますが、コンピュータは8ビット(1バイト、8ビットをひとまとめにした単位)を基本の処理単位として扱うことが多いため、実際には都道府県コードのような小さなデータでも、1バイトを使って処理されることが一般的です。「何ビットあれば足りるか」という理論値と、「実際に何ビット使われるか」という実装が、必ずしも一致しないことが分かる例です。
ここからは、基礎の一歩先の話です。初心者の方は読み飛ばして構いません。でも、「2進法は数を表すだけの仕組みだ」と思っていた方ほど、「そうだったのか」となる話です。
文字も、音も、画像も、突き詰めれば0と1
ここまで見てきたのは、数値を2進法で表す方法でした。しかし、コンピュータが2進数で表現できるのは数値だけではありません。文字はASCIIコードのような規格で数値に対応づけられ、音や画像も、それぞれ決まった手順で数値に変換されてから、2進数として保存されています。次のレッスンでは、音と画像がどのようにデジタル化されるのかを見ていきます。
桁が増えるほど、表せる情報の種類は爆発的に増える
都道府県の例で見たとおり、ビット数を1つ増やすごとに、表せる組み合わせは2倍になります。6ビットで64通り、7ビットで128通り、8ビット(1バイト)であれば256通りです。ASCIIコードが128種類(7ビット分)の文字・記号を扱えるのも、この考え方にもとづいています。桁数を増やすほど、指数関数的に多くの情報を区別できるようになるのが、2進法の面白さです。
教室のひとこま
最後に、このテーマを教えるとき、教室でよく交わされるやりとりを。
講師
講師電卓アプリのプログラマーモードを実際に開いてもらうと、「こんな機能があったんですね」と驚かれることが多いです。身近なアプリの中にも、覗いてみると新しい発見があります。