コンピュータはなぜ様々な種類の情報を取り扱えるのか。それはあらゆる情報を「数値」で取り扱っているからだ。このように「情報を数値に置き換えること」を符号化と言う。今回は符号化を科学的に考える理論を解説しよう。

 そもそもコンピュータが開発された目的は,数値の計算を自動化することにあった。そのため,英和辞典で“computer”の意味を調べると,「電子計算機」とか「計算する人」となっている。

 ところが現在のコンピュータは数値だけではなく,文字や画像,音声といった様々な情報を取り扱うことができる。あたかも,あらゆる仕事を自動化できる“万能な機械”のようだ。

 ではコンピュータは,いったいどのようにして文字や画像,音声などの情報を取り扱っているのだろうか,今回は,その解となる「符号化理論」について見ていこう。

すべての情報は数値で表せる

 皆さんは,コンピュータのディスプレイに表示される文字が,内部的に「文字コード」と呼ばれる数値で取り扱われていることをご存知だろう。同様に画像や音声も「数値」として取り扱われている。このように,情報を数値化したものを「符号」または「コード(code)」と呼び,情報を数値に置き換えることを「符号化」または「コード化」と呼ぶ。

 今では,文字や画像,音声のように本来は数値ではない情報を数値で表せる(符号化できる)ことなど,常識になってしまったのかもしれない。だが,それに最初に気が付いた天才的な人物がいることを忘れてはならない。その天才とは,米国の数学者「シャノン(Claude Elwood Shannon)」のことだ。

 シャノンは,1948年に「情報理論(A Mathematical Theory of Communication)」という論文で,情報を理論的に取り扱う方法を発表した。具体的には,情報の最小単位は「ビット(bit)」であり,現実世界のあらゆる情報はビットに分解できる(数値で表せる)ことを提唱した。

 ビットとは,2進数の1桁に相当する単位で,「0」または「1」という2通りの符号を表すことができる。桁数を増やせば,さらに多くの符号を表現できることは周知の通りだ。例えば,8桁(8ビット)の2進数の場合,「00000000」~「11111111」という256通りの符号を表現できる。これらの符号を10進数に割り当てて,0~255の整数や-128~+127の整数を表現できる。また,文字や画像を符号で表示することも可能だ。

 シャノンはさらに,音声のようなアナログ情報もビットに分解できる方法を示した。すなわち「デジタル化」である。デジタル化は,滑らかに変化するアナログ情報を一定の間隔で「サンプリング」する(その時点の値を読み取る)ことでデジタル情報に変換するものだ。図1のように,アナログ情報の電圧値を一定時間ごとにサンプリングすれば,デジタル情報として符号化できる。

図1●あらゆる情報を数値で表す「符号化」の例
図1●あらゆる情報を数値で表す「符号化」の例
情報を数値に置き換えることを「符号化」または「コード化」と呼ぶ。 音声などのアナログ情報は,電圧値を一定間隔ごとにサンプリング(標本・抽出)することで,符号化する

 ではサンプリングはどの程度の間隔で行えばよいのだろうか。シャノンは,「情報が変化する速さの2倍以上の間隔でサンプリングすれば,情報の変化を見落とすことなく,元通りの情報に戻せる」と結論づけた。これを「標本化の定理 (シャノンの定理)」と呼ぶ。

 音楽CDをイメージすると分かりやすいだろう(図2)。人間の耳は20KHz(Hzは「1秒間に1回の変化」を意味する)までの周波数しか聞き取れないと言われており,その2倍以上の間隔,つまり40KHz以上でサンプリングすれば,再生した時も人間の耳には同じ情報として伝わる

図2●標本化定理(シャノンの定理)の例
図2●標本化定理(シャノンの定理)の例
シャノンは実際の周波数の2倍以上でサンプリングすれば情報の漏れがなくなり,元の情報に戻せると提唱。例えば人間が聞き取れる音声情報は20KHz(1秒間に2万回の変化)程度と言われ,この2倍に当たる40KHz以上でサンプリングすれば,元に戻した時も人間の耳には同じ情報として伝わる