ブール代数

論理回路 logic

論理回路を構成する論理ゲートや論理式は、0と1という2値を扱います。この2値の計算を行う時のルールがブール代数です。ブール代数には、日常生活で扱う10進数の四則演算と同様のルールも存在しますが、2進数の計算特有のルールも存在します。
ブール代数は、主に論理回路や論理式の最適化に利用されます。論理回路の最適化とは、ある論理回路から冗長な回路を削減することを意味します。

基本演算

ブール代数の基本演算のルールは、表1のように基本ゲートの入出力の関係に対応します。具体的には、表1のNo.1がNOTゲート、No.2からNo.4がANDゲートとORゲートの入出力の関係に対応します。表中の”双対表現”は、0と1を入れ替えて、AND()とOR(+)を入れ替えた演算も成り立つというルールです。例えば、表1 No.2では、左列の演算00=0の0を1に置き換え、さらにANDをORに置き換えた右列の双対表現も成り立ちます。
表1 No.1の左列の演算と右列の双対表現を合わせたものがNOTゲートの真理値表と同じ意味を持ちます。また、表1 No.2からNo.4は、左列の演算部分がANDゲートの真理値表と同じ意味を持ち、右列の双対表現がORゲートの真理値表と同じ意味を持ちます。

表1 ブール代数の基本演算
No. 演算 意味 双対表現 意味
1 0=1 NOT 1=0 NOT
2 00=0 AND 1+1=1 OR
3 11=1 AND 0+0=0 OR
4 01=10=0 AND 1+0=0+1=1 OR

1変数の法則

表1の基本演算を基に、ある1つの変数を含む演算を行う場合の法則をまとめたものが表2です。表2ではAが変数です。

表2 ブール代数の法則(1変数)
No. 演算 双対表現
1 A1=A A+0=A
2 A0=0 A+1=1
3 AA=A A+A=A
4 A=A
5 AA=0 A+A=1

表2 No.1 〜No.5の意味は、次の通りです。

No.1:A1=A

「変数Aに1をかけた(Aと1のANDの)結果は、元のAと等しい」という法則です。これは、日常の積の演算で「ある数に1をかけたものは、元の数と等しい」という法則と同じです。Aに具体的な値を入れてみると、A=0のとき、01=0となり、表1の基本演算のルールから、結果は元のAと同じ値0になります。また、A=1のときは11=1となり、基本演算のルールから、結果は元のAと同じ値1になります。
双対表現についても同様です。法則1の双対表現は、「変数Aに0を足した(Aと0のORの)結果は、元のAと等しい」という法則です。Aに具体的な値を入れてみると、A=0のとき、0+0=0になり、基本演算のルールから、結果は元のAと同じ値0になります。また、A=1のときは1+0=1になり、基本演算のルールから結果は元のAと同じ1になります。

No.2:A0=0

「変数Aに0をかけた(Aと0のANDの)結果は、0に等しい」という法則です。これは、日常の積の演算で「ある数に0をかけたものは、0に等しい」という法則と同じです。Aに具体的な値を入れてみると、A=0のとき、 00=0となり、表1の基本演算のルールから結果は0になります。また、A=1のときは10=0となり、基本演算のルールから結果は0になります。
双対表現についても同様です。法則2の双対表現は、「変数Aに1を足した(Aと1のORの)結果は、1に等しい」という法則です。Aに具体的な値を入れてみると、A=0のとき、0+1=1となり、基本演算のルールから結果は1になります。また、A=1のときは1+1=1となり、基本演算のルールから結果は1になります。

No.3:AA=A

「変数AにAをかけた(AとAのANDの)結果は、元のAに等しい」という法則です。この法則は、日常の10進数の積の演算では成立しないブール代数特有の法則です(10進数でA=10のとき、10×10=100であり、結果は10でなない)。Aに具体的な値を入れてみると、A=0のとき、 00=0となり、表1の基本演算のルールから結果はAと同じ値0になります。また、A=1のときは11=1となり、基本演算のルールから結果はAと同じ値1になります。
双対表現についても同様です。法則3の双対表現は、「変数AにAを足した(AとAのORの)結果は、元のAに等しい」という法則です。Aに具体的な値を入れてみると、A=0のとき、0+0=0となり、基本演算のルールから結果は元のAと同じ値0になります。また、A=1のときは1+1=1となり、基本演算のルールから結果は元のAと同じ値1になります。

No.4:A=A

「変数Aを2回否定した結果(2段のNOT)は、Aに等しい」という法則です。Aに具体的な値を入れてみると、A=0のとき、表1の基本演算のルールから0=1=0となり、結果は元のAと同じ値0になります。また、A=1のときは、基本演算のルールから1=0=1となり、結果は元のAと同じ値1になります。
法則4の双対表現はありません。

No.5:AA=0

「変数Aとその反転値をかけた(AとNOT AのANDの)結果は、0に等しい」という法則です。Aに具体的な値を入れてみると、A=0のとき、表1の基本演算のルールから00=01=0となり、結果は0になります。また、A=1のときは、基本演算のルールから11=10=0となり、結果は0になります。
双対表現についても同様です。法則3の双対表現は、「変数Aとその反転値を足した(AとNOT AのORの)結果は、1に等しい」という法則です。Aに具体的な値を入れてみると、A=0のとき、基本演算のルールから0+0=0+1=1となり、結果は1になります。また、A=1のときは、基本演算のルールから1+1=1+0=1となり、結果は1になります。

複数変数の法則

表3は、2変数または3変数を扱う場合の法則です。表3のA,B,Cが変数を意味します。

表3 ブール代数の法則(複数変数)
No. 演算 双対表現 名称
1 AB=BA A+B=B+A 交換則
2 (AB)C=A(BC) (A+B)+C=A+(B+C) 結合則
3 (AB)+(AC)=A(B+C) (A+B)(A+C)=A+(BC) 分配則
4 A(A+B)=A A+(AB)=A 吸収則
5 (AB)+(AB)=A (A+B)(A+B)=A 相殺則

表3の、No.1〜No.5の意味は、次の通りです。

No.1:交換則

10進数の演算の交換法則と同じです。「変数Aと変数Bをかけた(AとBのANDの)結果は、変数Bと変数Aをかけた結果に等しい」という法則です。
双対表現は、「変数Aと変数Bを足した結果は、変数Bと変数Aを足した結果に等しい」という意味になります。このように、AとBを交換しても演算の結果は同じになるというのが交換則です。

No.2:結合則

「変数A,変数B,変数Cをかけるとき、(AB)を先に計算してCをかけた結果と、(BC)を先に計算してAをかけた結果は等しい」という法則です。
双対表現は、「変数A,変数B,変数Cを足すとき、(A+B)を先に計算してCを足した結果と、(B+C)を先に計算してAを足した結果は等しい」という意味になります。このように、かっこ()の位置を変えても演算の結果は同じになるというのが結合則です。

No.3:分配則

10進数の演算の分配法則と同じです。表3の例の場合、式の左辺に含まれる変数Aは、右辺のように1つのAにまとめることができます。逆に、式の右辺のAは、左辺のように分配することができます。

No.4:吸収則

冗長な変数の削除に関する法則です。表3の例の場合、変数Bは冗長です。表3のA(A+B)=Aという式は、B=0とき、A(A+0)=AAとなります。表2のNo.3からAA=Aなので、この式はAと等しいことがわかります(変数Bは不要)。B=1のときは、A(A+B)=A(A+1)となります。表2のNo.2からA+1=Aなので、A(A+1)=AA=Aとなり、この式はAと等しいことがわかります(変数Bは不要)。
双対表現についても同様です。B=0のとき、A+(AB)=A+(A0)=A+0=Aとなり、この式はAと等しいことがわかります(変数Bは不要)。また、B=1のときは、A+(AB)=A+(A1)=A+A=Aとなり、この式はAと等しいことがわかります(変数Bは不要)。

No.5:相殺則

冗長な変数の削除に関する法則です。表3の例の場合、変数Bは冗長です。表3の(AB)+(AB)という式は、B=0のとき(A0)+(A1)=Aとなり、Bは相殺されて結果はAになります。B=1のときは、(AB)+(AB)=(A1)+(A0)=Aとなり、Bは相殺されて結果はAになります。
双対表現についても同様です。B=0のとき、(A+B)(A+B)=(A+0)(A+1)=A(A+1)となります。ここで、表2のNo.2とNo.3からA+1=A、またAA=Aなので、A(A+1)=AA=Aとなり、Bは相殺されて結果はAになります。また、B=1のときは、(A+B)(A+B)=(A+1)(A+0)=(A+1)A=AA=Aとなり、Bは相殺されて結果はAになります。

タイトルとURLをコピーしました