前回は,文字や画像,音声などのあらゆる情報を「1」と「0」のビットに置き換える符号化理論を学んだ。今回は,その「1」と「0」だけを使い,様々な演算を実現する「ブール代数(論理代数)」について考えてみよう。

 ブール代数を考案したのは,英国の数学者ジョージ・ブール(1815~1864)である。ブールが生きていた時代にコンピュータは存在していなかったが,ブール代数を応用したからこそ,現在のコンピュータが実現できたと言える。すなわちコンピュータは,ブール代数の演算を組み合わせて様々な機能を実現しているのである。 今回は,このブール代数の仕組みについて解説しよう。

「1」と「0」で論理を組み立てる

 ブール代数は,別名「論理代数」とも呼ばれる。論理を数学的に表すことを目的としているからである。より分かりやすく言えば,人間の思考(ほんの一部だが)を数値で取り扱うというものだ。

 ブール代数の基本となる考え方は,真を「1」,偽を「0」で表すことである。例えば人間は,「矢沢久雄は男性である」のような命題の真偽を考えることができる。この命題は「真」だと考えられるが,それをブール代数では「1」と表す。

 ブール代数は,真と偽だけ(1と0だけ)を対象とした代数である。したがって,1と0だけを対象とした演算を行う。ただし演算と言っても,加減乗除の四則演算(+,-,×,÷)ではなく,「AND(論理積)」,「OR(論理和)」,「NOT(論理否定)」という3つの演算を基本とした「論理演算」を行うのである。

 具体的にそれぞれがどんな演算を行うのかを表1表2表3に示しておこう。ここでは演算する2つの数を「x」と「y」で表した。これらの変数が取り得る値は「1」か「0」のいずれかになる。

表1●AND演算における演算結果(真理値表)
表1●AND演算における演算結果(真理値表)
数学者のブールは,「1(真)」と「0(偽)」を使った論理演算としてAND,OR,NOTの3種類を定義。AND演算は,xとyの両方に「1」が入力されたときに演算結果として「1」を返す論理演算

表2●OR演算における演算結果(真理値表)
表2●OR演算における演算結果(真理値表)
OR演算は,xかyのいずれか一方に「1」が入力されたときに演算結果として「1」を返す論理演算

表3●NOT演算における演算結果(真理値表)
表3●NOT演算における演算結果(真理値表)
NOT演算は,「0」のときは「1」,「1」のときは「0」のように,入力値と反対の演算結果を返す論理演算

 このように論理演算の結果を示した表を「真理値表」と呼ぶ。ANDを「かつ」,ORを「または」,NOTを「でない」と読めば,真理値表を容易に理解できるだろう。例えば,「x AND y」の演算結果は「x=1かつy=1(両方とも真)」のときだけ「1」となる。「x OR y」の演算結果は「x=1またはy=1(少なくともどちらか一方が真)」のときに「1」となる。「NOT x」の演算結果は,xの値を反転したものとなる。すなわち,「1」なら「0」,「0」なら「1」になるわけだ(真の反転は偽,偽の反転は真である)。ANDとORは,2つの数値に対する演算だが,NOTは1つの数値に対する演算となる。

 何度もくどいようだが,ブール代数は,真と偽だけ(1と0だけ)を対象とした代数である。したがって,演算する値も,その演算結果も必ず「1」か「0」のいずれかとなる。先ほど「AND演算はxとyの両方が1のときだけ演算結果が1になる」と説明したが,そうでない場合の演算結果は0だ。1でなければ0なのである。どのような論理演算を行っても,演算結果は決して桁上がりはしない。以上のことに注意しながら,以降の説明を読んで欲しい。

論理演算はMIL記号で表す

 皆さんは,コンピュータのハードウエアを構成する主要な電子部品がIC(Integrated Circuit)であることをご存知だろう。大規模なICは,「LSI(Large Scale IC)」とか,「VLSI(Very Large Scale IC)」と呼ばれる。コンピュータに搭載されるプロセサやメモリー,I/O(コンピュータ本体と周辺装置を接続するインタフェース)なども,その実体はすべてICなのだ。ICには何本ものピンが付いており,他のICとの間で電気のONとOFFの信号(1と0に対応している)をやり取りしている。

 ではICの中では,いったい何が行われているのだろうか。IC上には膨大な数のトランジスタが集積されていることはご存じだろう。それらのトランジスタはいったい何をするのだろうか。