まず、簡単に「二進法」と「十六進法」について触れておきましょう。
私達は、普段数を数える時には、「1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ……」と数えます。 9 まで数えた後、次の桁に数字を入れて 10 になります。 10 毎に一つ上の桁に数字が繰り上がります。 これが、十進法と呼ばれるものです。 十進法で書かれた数を十進数と呼びます。
理屈上は十進法でなくても、何進法でも使うことができます。 コンピュータの世界では、十進法以外に二進法と十六進法もよく使うことがあります。 コンピュータは内部で、「電気が通っているかいないか」という形でデータを保存し処理しています。 それを人間の見える形にする時は、電気が通っていない状態を 0、通っている状態を 1 として表現しています。 このような形でデータを表現しているので、 コンピュータの話をする時には、二進法を使うと都合がいい場合がたくさんあります。 また、二進法の 4 桁がちょうど十六進法の 1 桁に対応します。 ですので、二進法で表記するととても長くなってしまうので、 二進法との対応が分かりやすい十六進法を使うことがよくあります。
以下に十進法と二進法、十六進法の対応表を挙げておきます。 この授業では、それほど出てきませんが、 知識として、二進法、十六進法を知っておきましょう。
十進法 | 二進法 | 十六進法 |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
2 | 10 | 2 |
3 | 11 | 3 |
4 | 100 | 4 |
5 | 101 | 5 |
6 | 110 | 6 |
7 | 111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
10 | 1010 | A |
11 | 1011 | B |
12 | 1100 | C |
13 | 1101 | D |
14 | 1110 | E |
15 | 1111 | F |
16 | 10000 | 10 |
17 | 10001 | 11 |
... | ... | ... |
前述の通り、コンピュータの内部では、0 と 1 の組合せで数を表現しています。 これが二進法に対応するわけですが、この二進法の一桁のことを「ビット」と呼びます。 そして、二進数の桁数を表わす時には、このビットという単位を使います (「32 ビットパソコン」とか「64 ビットパソコン」というような言い方があります。 これは、そのパソコンが一度に何桁の二進数を扱うことができるかということを表しています。 32 ビットパソコンは一度に 32 桁の二進数を扱うことができるということになります)。
さらに、8 ビットのことを 1 バイト (1 B) と呼びます。 パソコンのカタログなどでよくこのバイトという言葉を聞くと思います。 これはメモリやハードディスクのサイズなどを表すために、 このバイトという単位を使っているからです。
また、これは、バイトという単位を使う場合に限らないのですが、 補助単位として、以下のものが使われます (1000 毎に補助単位が変わりますが、 1024 (=2^10) 毎に補助単位が変わることもあります)。
皆さんも日常生活の中で「アナログ」と「デジタル」という言葉を聞くことは多いと思います (コンピュータの世界では、「ディジタル」という表記を使うこともありますが、 この授業では、「デジタル」で統一します)。 一番よく聞くのは、「アナログ時計」と「デジタル時計」という言葉でしょうか。 最近は、「アナログ放送」「デジタル放送」というのもよく聞きます。 この授業の中でも何度か「デジタル」という言葉を使いました。
では、これらの言葉は一体どういう意味なのでしょうか。 一般的には、「アナログ人間」「デジタル人間」という言葉で使われることもありますが、 本来、アナログ(analog, analogue)というのは、 「(連続的に変化する)値を連続的に表す」という意味で、 デジタル(digital)というのは、 「(連続的に変化する)値を離散的に表す」という意味になります。
例えば、時間というものは、連続的に変わっていきます。 急に時間が飛んでしまうことはありません。 それをそのまま連続的に変化する値として表現しているものがアナログ時計です。 アナログ時計の針は止まらず連続的に位置が変わっていきます。 それに対して、一秒間隔、もしくは、一分間隔で値が変わっていくものがデジタル時計になります。 デジタル時計では、連続的に変わる時間を、 近似的に一秒毎、一分毎に変わっていくかのように表示しています (アナログ時計の中には、秒針が一秒毎に位置を変えるものもあります。 そのような時計は、秒針だけはデジタルだ、ということもできます)。
これと同じことは、音声や画像に関しても成り立ちます。 連続的に変わる空気の振動としての音を、そのままの形で表現した場合がアナログで、 近似的に離散的な値として表現した場合がデジタルになります。
では、コンピュータでデータを扱う場合には、どちらの方が都合がいいのでしょうか。 コンピュータは内部ではデータを全て数値で表しています。 アナログの場合、値は連続的に変化するので、それを正確に数値で表すことは困難です。 それに対して、デジタルの場合、値は離散的に変化しています。 値の変化は飛び飛びなので、どの時間にどの値に変化したかということさえ数値化すれば、 そのデータをコンピュータで記録することができます。 ですので、コンピュータでデータを扱う際には、デジタルデータを使う方が適切です。
そろばんは連続的な数値を離散的に表現しているので、デジタルの機器ということになります。 そろばんはコンピュータのようないわゆる「デジタル機器」との対照で、 アナログの代表のように言われてしまうことがありますが、 立派なデジタル機器です。 ちなみに、アナログで計算を行う道具として、かつて「計算尺」というものが使われていました。 これは、定規のように目盛りが付いた複数の尺を組み合わせて計算を行うもので、 電気や測量などの分野で使われていました。
また、現在のコンピュータは、上記のように全てデジタルでデータを扱っていますが、 実は、現在のような仕組みのコンピュータができる前には、 「アナログコンピュータ」と呼ばれるものが存在していました。 例えば、20世紀前半には、歯車、回転軸と円板を利用して機械的に微分方程式を解く 「微分解析機」というものが存在していました。 当時、軍事的な計算などに使われていました。
上述の計算尺や微分解析器などは 東京理科大学 近代科学資料館で、 その実物が展示されています。
もうすでに、皆さんはご存知だと思いますが、 電子メールでは、文書や写真のデータをメールに添付して送信することが出来ます。 しかし一方で「大きなファイルを添付するのは避けましょう」とよく言われます。 これには、以下のような理由があります。
しかし「大きいファイル」って一体どのくらいだろう……というのは、 パソコンを使い始めたばかりの人には直感的にわかりにくいものです。 そこで、ちょっとした計算をしてみましょう。
画像や音声もやはりコンピュータ内部では数で表現されています。 例えば画像は[図1]のようにさまざまな色の点の集合として表示されています。 個々の色には番号が割り振られていて、 コンピュータからすれば画像は色を示す番号をずらっと並べたデータに過ぎません。 さて、24ビットカラー(約 1600 万色)のデジカメの画像だと、 ひとつの点あたりで漢字 1.5 文字分のデータが必要です。 最近の数万円クラスのデジカメだと、 中程度の画質モードで「一枚あたり横 1024 ×縦 768 個の点」で記録するモードがあることが多いです。 この画像でどのくらいのデータサイズになるのかを概算してみると、 「1 点あたり漢字 1.5 文字分×横 1024 点×縦 768 点=漢字 1179648 文字相当」となります。 100 万文字の文章を書けと言われても、そうそう書けるものではありません。 音声データの場合、CDの音質で 44.1kHz = 1秒あたり 44100 個のデータ。 CD の場合、一個のデータが漢字一文字のデータと同じ大きさなので、 「1 秒あたり漢字 44100 文字相当」になります。
[図1]画像・音声データの大きさを文字データに換算すると……
実際には、インターネットで流通する画像データや音声データは (JPEG、MP3、MPEG などの方法で)圧縮されてサイズが小さくなっているので、 これほどひどいことにはなりません。 しかし、画像や音声のデータが普通の文字データよりはるかに大きいことには変わりありません。 本当にその画像や音声を送る必要があるのか、電子メールを送信する前にもう一度考えましょう。