矢沢 久雄 グレープシティ アドバイザリースタッフ

 コンピュータの世界では,計算のことを演算(えんざん)と呼びます。コンピュータにできる演算の種類には,数学の加減乗除の四則演算の他にもいくつかの種類があります。その中でも,いかにもコンピュータらしく,かつ,よく使われるのが論理演算(ろんりえんざん)です。Basic,C言語,Javaなど,何らかのプログラミング言語をマスターするには,論理演算を理解する必要があります。論理演算が分からなければプログラムを作成できない,と言っても過言ではないでしょう。

 プログラミングをしない人でも,コンピュータを使いこなす基礎知識の一つとして論理演算を知っておくと便利なことがあります。例えば,Webページの検索エンジンで検索条件を絞るときには,論理演算を使うことがあります。

 ところで皆さんは,自信を持って「論理演算が分かる」と言えますか?ちょっと心配なら,この連載をお読みください。論理演算の意味と使い方をできるだけ短く整理して説明させていただきます。よろしくお付き合いください。

●論理演算の種類と真理値表

 演算とは,データに何らかの加工を施して,その結果の値を得ることです。四則演算なら,加算結果,減算結果,乗算結果,除算結果が得られます。例えば,5+3という加算の演算結果は8になります。これは論理演算も同様です。データを演算して,その結果を得ます。例えば,1 AND 1という論理演算の結果は1になります。

 論理演算には,「AND演算」,「OR演算」,「XOR演算」,「NOT演算」の4種類があります。論理演算と四則演算の大きな違いは,論理演算が2進数の1けた(=1ビット)を対象としていることと,演算結果が決してけた上がりしないことです。コンピュータは,内部的にすべてのデータを2進数で取り扱っていることをご存知ですね(こちらの連載で確認してください)。だからこそ,コンピュータの世界では論理演算が重要なのです。

 論理演算は,2進数の1けたを対象として演算結果がけた上がりしないのですから,0または1だけを演算し,その結果も0または1のいずれかになります。4種類の論理演算の演算結果を表1~表4に示しておきます。2進数の0が偽(ぎ=ウソ)を表し,1が真(しん=ホント)を表していると考えれば,論理演算は真偽を演算するものとみなせるので,論理演算の結果を表す表のことを「真理値表(しんりちひょう)」とも呼びます。ここでは,演算される0または1という値をaとbという変数で示しています。

表1●AND演算の真理値表
aの値bの値a AND bの演算結果
1(真)1(真)1(真)
0(偽)1(真)0(偽)
1(真)0(偽)0(偽)
0(偽)0(偽)0(偽)
表2●OR演算の真理値表
aの値bの値a OR bの演算結果
1(真)1(真)1(真)
0(偽)1(真)1(真)
1(真)0(偽)1(真)
0(偽)0(偽)0(偽)
表3●XOR演算の真理値表
aの値bの値a XOR bの演算結果
1(真)1(真)0(偽)
0(偽)1(真)1(真)
1(真)0(偽)1(真)
0(偽)0(偽)0(偽)
表4●NOT演算の真理値表
aの値NOT aの演算結果
1(真)0(偽)
0(偽)1(真)

●真理値表の覚え方は簡単

 論理演算の真理値表は丸暗記する必要ありません。演算の意味が理解できれば,すぐに覚えられるからです。順番に説明しますので,真理値表と見比べながら納得してください。

 AND演算(アンドえんざん)の機能は,英語のANDの意味そのものです。ANDを「かつ」と訳してください。1と1のAND演算結果だけが1になります。すなわち演算する2つの値の両方が1(真)なら演算結果が1(真)になるのです。「aかつbが真なら結果は真」というわけです。2進数では1でなければ0ですから,その他の演算結果は0になります。AND演算のことを「論理積(ろんりせき)」とも呼びます。

 OR演算(オアえんざん)の機能も,英語のORそのものです。ORを「または」と訳してください。演算する2つの値のどちらか一方が1(真)なら演算結果が1(真)になります。「aまたはbが真なら結果は真」というわけです。OR演算のことを「論理和」とも呼びます。

 XOR演算(エックスオアえんざん)は,eXclusive ORという言葉の略称で,「排他的論理和(はいたてきろんりわ)」とも呼ばれます。これは,OR演算に似ているが排他的である,すなわち他を除外するという意味です。OR演算の真理値表とXOR演算の真理値表を比べて見ると,1と1の演算結果だけが異なっています。これが排他的ということです。演算する値が同じなら(1と1,または0と0),演算結果は0になります。「同じはイヤだから結果を0(偽)にしちゃうよ」というイメージです。

 NOT演算(ノットえんざん)は,単項演算(たんこうえんざん)です。単項演算とは,1つの値に対して演算を行うものです。AND演算,OR演算,XOR演算は2つの値に対して演算を行いましたが,NOT演算は1つの値を反転する演算を行います。反転するとは,0なら1に,1なら0にすることです。2進数は0と1しかないのですから,0の反転は1で,1の反転は0です。NOT演算のことを「論理否定(ろんりひてい)」とも呼びます。

 これで,4種類の論理演算の種類と演算結果を覚えられたでしょう。思ったより簡単だったはずです。くどいようですが,真理値表を丸暗記する必要などありません。論理演算の意味を覚えてください。

図1●8ビットのAND演算

●複数けたの論理演算

 複数けたの2進数で論理演算を行うこともできます。ただし,論理演算はけた上がりをしないのですから,複数けたの論理演算とは,1ビットごとの論理演算を複数同時に行っているのに過ぎません。したがって,対応するけた同士で論理演算を行えばよいのです。図1[拡大表示]に8ビット(8けたの2進数)でAND演算を行う例を示します。

 ほとんどのコンピュータは,8ビットをデータの基本単位としています。したがって,もしも1ビットのデータを論理演算したい場合でも,上位けたに0を詰めて8ビット(またはそれ以上)にする必要があります。例えば,1と0のAND演算を行いたいなら,00000001と00000000のAND演算を行い,その下位1けただけを見ることになります。

●ICの中身は論理回路の組み合せ

図2●ICの中には論理回路が入っている
 コンピュータのハードウエアを構成する主要な部品は,IC(アイシー,Inegrated Circuit=集積回路)です(こちらの連載で確認してください)。ICは黒いボディーに何本ものピンが付いたムカデのような形状をしていて,それぞれのピンで2進数の1けたのデータを入出力しています。それではICの中はどうなっているかと言うと,論理演算を行う仕掛けが入っていて,これを「論理回路」と呼びます(図2[拡大表示])。だからこそ,コンピュータの世界では,論理演算が重要なのです。

 コンピュータの回路図では,論理回路をMIL記号(ミルきごう)という図記号で表します。参考までに,図3図6に4種類の論理演算の論理回路を表すMIL記号を示しておきます。どの図でも,向かって左側にあるピンから0または1のデータを入力すると,その論理演算結果が右側のピンから出力されます。CPUのような大規模なICでは,その内部で膨大な数の論理回路が組み合わされて高度な機能が実現されているのです。

図3●AND回路のMIL記号
図4●OR回路のMIL記号
図5●XOR回路のMIL記号
図6●NOT回路のMIL記号

 今回は,論理演算の種類と意味だけを説明しました。ICの中身が論理回路だと知ったことで「コンピュータなんて単純なものだ」と感じていただけことでしょう。皆さんは「個々の論理演算を何のために使うのだろう?」と思われているはずです。その疑問には,次回以降の連載の中で答えさせていただきます。お楽しみに!

【今後の予定】
第2回 論理演算の用途
第3回 論理演算で四則演算ができる
第4回 ド・モルガンの法則は逆転の発想だ
第5回 真と偽の論理演算