[拡大表示]

コンピュータはなぜ2進数を使うのか

 タイトルを読んで,「いや,そんなことは知っているよ。デジタル回路だから電圧の高低で2進数の1と0を表すんでしょ」。――なんて思われるかもしれません。確かにその通りなのですが,現在当たり前となったこの事実にたどり着くには,人類の歴史を揺るがす世紀の大発明が存在したのです。発明した人の名前はClaude Elwood Shannon(クロード・シャノン)。2001年2月に亡くなりました。

2進数でいいんじゃない?

 そもそも,初期の計算機は人間の感覚に合わせて10進数で作られていました。たとえば

3 + 5

を計算するときは,歯が三つある歯車が1回転してある歯車を回し,つぎに歯が五つある歯車が1回転してさきほど回したある歯車をまた回します。ある歯車は八つ歯が進んだので答えは8,というようなものです。ある1ケタを足し算した結果が10を超えると,一つ上のケタを表す隣の歯車の歯を一つ進めます。

 1937年,シャノンは「リレーとスイッチによる回路の記号論的解析(A Symbolic Analysis of Relay and Switching Circuits)」という修士論文で,ブール代数を適用することで,あらゆる演算が2進数でできること,それがスイッチの開閉と,記号論で言う真偽(ソースコードによくでてくるTRUEとFALSEです)に一致することを示しました。AND(論理積)は二つのスイッチを直列に並べ,OR(論理和)は二つのスイッチを並列に並べれば実現できると述べたのです。

 当時,トランジスタやICなどという便利なものはなく,電圧を信号として扱うには真空管を利用していました。10進数のまま真空管を利用した計算機を作ろうとすると,一つの電線で10種類の電圧を区別しなければいけません。たとえば0~5ボルトの範囲なら,一つの値と値の間は約0.56ボルトしかなく,これではちょっとしたノイズが混じるだけですぐに値を間違えてしまいます。当時の技術でこれを制御するのはほとんど不可能でした。

 このような状況で,「2進数を使えば計算できるから,電圧の種類は2種類でいいよ」と指摘したシャノンの論文は,電気的な計算機,つまりコンピュータを作ろうとした人には,大変うれしい指摘だったのです。世界最初のコンピュータとされる「ENIAC」は,アナログの連続した電圧を扱う真空管を,あえて0と1の2値を扱う素子として採用して,1946年に発表されました。

あらゆる情報は2進数で表せる

 このころのコンピュータは,数値計算しかできない単なる“計算機”,つまり自動化された高速なソロバンのようなものでした。しかし現代のコンピュータは,文字,画像,音声,動画などあらゆる情報を扱えます。

 実は,これらのあらゆる情報が2進数で表せることを示したのもシャノンでした。1948年に発表した「コミュニケーションにおける数学的理論(A Mathematical Theory of Communication)」という論文がそれです。

 シャノンはこの論文のなかで,(1)情報量という概念を定義し,その情報の最小の単位は2進数1ケタ(つまり1ビット)であること,(2)0と1の組み合わせで,ある情報を正確に伝達できること,(3)ある情報を判別する要素が2n通りある場合,nビットあればその情報を十分表現できること――などを示しました。(3)はたとえば,256種類の文字を区別するには,8ビット必要,という意味です。今日の通信,情報理論の基礎となる「シャノンの定理」と呼ばれるものです。

 情報を表す電圧の高低を扱う電子素子は,真空管から,トランジスタ,IC,LSIへと変わり,コンピュータの性能は飛躍的に向上しました。しかし,2進数の数値を電圧の高低で扱い,あらゆる情報を2進数で表すという基本は,現在のコンピュータも変わっていません。