Lesson 3

論理演算

Lesson 3 Chapter 1
否定

Lesson3では論理演算について説明します。 論理演算とは、真偽値を用いて命題を数字のように計算するためのものです。 真偽値とは、命題の真偽をコンピュータで扱えるように真を1、偽を0とします。 命題の真偽について、もう一度おさらいすると、Lesson2のChapter1とChapter2で説明した通り、真とは事実であることを指し、偽とは事実でないことを指します。 コンピュータプログラミングにおいて、論理演算は、主にビット演算に用いられます。 ビット演算とはコンピュータ内部のデジタル信号を計算する方法であり、アセンブラやC言語などでよく使われており、組み込みの現場では必須の知識です。 真偽値については、Chapter7で詳しく説明しますので、Chapter1からChapter6までは論理演算の計算方法について説明します。 また、論理演算を用いた論理回路の演算と、その出力結果である真理値表に関してはLesson7で詳しく解説します。

Chapter1では、論理演算の否定について説明します。 論理学における否定とはLesson2のChapter6でも説明した通り、命題の真偽を反転させることです。 論理演算における否定も論理学における否定と同様、命題の真偽を反転させることであり、論理演算の場合は真偽値を反転させることになります。 論理演算において、否定を表す記号は「¬」で表されます。

命題Pの否定は以下のように表されます。

命題Pの否定

¬P

次に、命題Pについて、真偽値を代入して計算する場合を見ていきたいと思います。 以下の計算例では、入力した値Pの真偽値を反転させ、0(偽)なら1(真)、1(真)ならば0(偽)を出力しています。

例1: 命題P = 0(偽)の否定

P = 0
¬P = 1

上の例では、命題P = 0(偽)が反転したので、命題 ¬Pの値は1(真)となります。

例2: 命題P = 1(真)の否定

P = 1
¬P = 0

上の例では、命題P = 1(真)が反転したので、命題 ¬Pは0(偽)となります。

以上が論理演算における否定の説明となります。論理学の否定と同じように、論理演算の否定も命題の真偽の反転となります。 なお、否定の論理回路NOTについてはLesson7のChapter4で詳しく解説します。

Lesson 3 Chapter 2
論理和

Chapter2では論理演算における論理和について説明します。 論理演算における論理和とは、2つの命題のうちどちらか一方または両方が1(真)である場合に1(真)を返し、それ以外の場合に0(偽)を返す演算です。 論理和は、通常の四則演算の足し算と似ています。例えば、命題Pが1(真)、命題Qが0(偽)の場合は論理和は1(真)となります。 この例を通常の四則演算の足し算に置き換えて考えてみると、以下のように表せます。

論理和を通常の四則演算の足し算に置き換えて考えてみた場合

命題P = 1(真)、 命題Q = 0(偽)
命題P + 命題Q = 論理和PQ
1 + 0 = 1
論理和PQ = 1(真)

論理演算における論理和において、通常の四則演算と異なるのは、命題Pと命題Qが両方とも1(真)だった場合です。 論理演算では1(真)と0(偽)の二つの値しかないので、1(真)に1(真)が足され場合は1(真)になります。

次に、記号を用いた論理演算における論理和の表し方を見ていきたいと思います。 論理演算における論理和は「∨」という記号で表されます。例えば、命題Pと命題Qの論理和は以下のように表されます。

論理和を通常の四則演算の足し算に置き換えて考えてみた場合

命題P = 1(真)、 命題Q = 0(偽)
命題P + 命題Q = 論理和PQ
1 + 0 = 1
論理和PQ = 1(真)

命題Pと命題Qの論理和

P ∨ Q

次に、命題Pと命題Qに真偽値を代入した場合を見ていきたいと思います。

例1: 命題Pが1(真)、命題Qが1(真)の論理和

P = 1,Q = 1
P ∨ Q = 1

命題Pと命題Qの値は両方ともが同じ1(真)なので、論理和P ∨ Qは1(真)となります。

例2: 命題Pが1(真)、命題Qが0(偽)の論理和

P = 1, Q = 0
P ∨ Q = 1

命題Pの値が1(真)なので、論理和P ∨ Qは1(真)となります。

例3: 命題Pが0(偽)、命題Qが1(真)の論理和

P = 0, Q = 1
P ∨ Q = 1

命題Qの値が1(真)なので、論理和P ∨ Qは1(真)となります。

例4: 命題Pが0(偽)、命題Qが0(偽)の論理和

P = 0, Q = 0
P ∨ Q = 0

命題Pと命題Qの値は両方ともが同じ0(偽)なので、論理和P ∨ Qは0(偽)となります。

以上が論理和の説明になります。 上の例文のように、論理和とは真偽値と真偽値の足し算として捉えることができます。 また、論理和は論理演算の基本なので、絶対に理解する必要があります。 なお、論理和の論理回路ORについてはLesson7のChapter2で詳しく解説します。

Lesson 3 Chapter 3
論理積

Chapter3では論理演算における論理積について説明します。 論理演算における論理積とは、2つの命題が両方とも1(真)である場合に1(真)を返し、それ以外の場合は0(偽)を返す演算です。 論理積は、通常の四則演算の掛け算と似ています。例えば、命題Pが1(真)、命題Qが0(偽)の場合は論理積は0(偽)となります。 この例を通常の四則演算の掛け算に置き換えて考えてみると、以下のように表せます。

論理積を通常の四則演算の足し算に置き換えて考えてみた場合

命題P = 1(真)、 命題Q = 0(偽)
命題P * 命題Q = 論理積PQ
1 * 0 = 0
論理積PQ = 0(偽)

論理積は、Chapter2で説明した論理和と異なり、命題Pと命題Qが両方とも1(真)だった場合も、通常の四則演算と同じく1(真)となります。

次に、記号を用いた論理演算における論理積の表し方を見ていきたいと思います。 論理演算における論理積は「∧」という記号で表されます。例えば、命題Pと命題Qの論理積は以下のように表されます。

命題Pと命題Qの論理積

P ∧ Q

次に、命題Pと命題Qに真偽値を代入した論理積の例を見ていきたいと思います。

例1: 命題Pが1(真)、命題Qが1(真)の論理積

P = 1, Q = 1
P ∧ Q = 1

命題Pと命題Qの値は両方ともが同じ1(真)なので、論理積P ∧ Qは1(真)となります。

例2: 命題Pが1(真)、命題Qが0(偽)の論理積

P = 1, Q = 0
P ∧ Q = 0

命題Qの値が0(偽)なので、論理積P ∧ Qは0(偽)となります。

例3: 命題Pが0(偽)、命題Qが1(真)の論理積

P = 0, Q = 1
P ∧ Q = 0

命題Pの値が0(偽)なので、論理積P ∧ Qは0(偽)となります。

例4: 命題Pが0(偽)、命題Qが0(偽)の論理積

P = 0, Q = 0
P ∧ Q = 0

命題Pと命題Qの値は両方ともが同じ0(偽)なので、論理積P ∧ Qは0(偽)となります。

以上が論理積の説明になります。 上の例文のように、論理積とは論理値と論理値の掛け算として捉えることがでます。 なお、論理積の論理回路ANDについてはLesson7のChapter3で詳しく解説します。

Lesson 3 Chapter 4
排他的論理和

Chapter4では排他的論理和について説明します。 論理演算における排他的論理和とは、二つの命題のいずれか一方のみが1(真)の時に1(真)となり、両方が1(真)または両方が0(偽)となるときは0(偽)を返す論理演算です。 排他的論理和は、Chapter2の論理和の論理演算において、命題Pと命題Qが両方とも1(真)の時に0(偽)を返す論理演算と言えます。 論理和と排他的論理和の違いについては以下のようになります。

論理和と排他的論理和の違い

命題P = 1(真)、 命題Q = 1(真)の場合
・論理和
命題P + 命題Q = 論理和PQ = 1(偽)
・排他的論理和
命題P + 命題Q = 排他的論理和PQ = 0(偽)

次に、論理演算における排他的論理和を表す記号について見ていきたいと思います。 論理演算における排他的論理和は「⊻」という記号で表されます。例えば、命題Pと命題Qの排他的論理和は以下のように表されます。

命題Pと命題Qの排他的論理和

P ⊻ Q

次に、命題Pと命題Qに真偽値を代入した場合について見ていきたいと思います。

例1: 命題Pが1(真)、命題Qが1(真)の排他的論理和

P = 1, Q = 1
P ⊻ Q = 0

命題Pと命題Qの値は両方ともが同じ1(真)なので、排他的論理和P ⊻ Qは0(偽)となります。

例2: 命題Pが0(偽)、命題Qが0(偽)の排他的論理和

P = 0, Q = 0
P ⊻ Q = 1

命題Pと命題Qの値は両方ともが同じ0(偽)なので、排他的論理和P ⊻ Qは1(真)となります。

例3: 命題Pが1(真)、命題Qが0(偽)の排他的論理和

P = 1, Q = 0
P ⊻ Q = 1

命題Pの値が1(真)なので、Chapter2で説明した論理和と同じく、排他的論理和P ⊻ Qは1(真)となります。

例4: 命題Pが0(偽)、命題Qが1(真)の排他的論理和

P = 0, Q = 1
P ⊻ Q = 1

命題Qの値が1(真)なので、Chapter2で説明した論理和と同じく、排他的論理和P ⊻ Qは1(真)となります。

以上が排他的論理和の説明になります。 上の例文から分かるように、排他的論理和とは片方の命題が1(真)、または両方の命題が0(偽)の時は論理和と同じ演算結果になりますが、命題が両方とも1(真)である場合は0(偽)となります。 排他的論理和は情報処理の試験では頻出するため、是非とも押さえておきたいものです。 なお、排他的論理和の論理回路XORについてはLesson7のChapter5で詳しく解説します。

Lesson 3 Chapter 5
含意

Chapter5では、論理演算における含意について説明します。 論理演算における含意とは、二つの命題を前提と結論に分け、前提が0(偽)または結論が1(真)のときに1(真)となる論理演算です。 含意は「AならばB」という形式で表され、Aを前提、Bを結論と呼びます。 論理演算において含意を表す記号としては「→」が使われます。

前提Aと結論Bにおける含意は以下のように表されます。

前提Aと結論Bにおける含意

A → B

次に、前提Aと結論Bに真偽値を代入した場合について見ていきたいと思います。

例1: 前提Aが1(真)、結論Bが1(真)の含意

A = 1, B = 1
A → B = 1
含意A → Bは1(真)となります。

例2: 前提Aが1(真)、結論Bが0(偽)の含意

A = 1, B = 0
A → B = 0
含意A → Bは0(偽)となります。

例3: 前提Aが0(偽)、結論Bが1(真)の含意

A = 0, B = 1
A → B = 1
含意A → Bは1(真)となります。

例4: 前提Aが0(偽)、結論Bが0(偽)の含意

A = 0, B = 0
A → B = 1
含意A → Bは1(真)となります。

以上が論理演算における含意の説明となります。 論理演算の含意においては、「AならばB」という構文であり、Lesson2のChapter4で説明した仮定と結論と同じ構文です。 仮定と結論は、前提条件が真でなければ結論も真とはなりませんでしたが、含意は、前提が真であっても、結論が偽ならば偽となり、前提が偽でも結論が真ならば真となります。 このことから、含意は、必ずしも直接的な因果関係を表していないことに注意する必要があります。

Lesson 3 Chapter 6
同値

Chapter6では、論理演算における同値について説明します。 論理演算における同値とは、2つの命題が共に真または共に偽のときに真となる論理演算です。 Chapter4で説明した排他的論理和の演算結果が全て反転した形になります。 同値と排他的論理和の違いについては、以下のように表されます。

同値と排他的論理和の違い

命題P = 1(真)、 命題Q = 1(真)の場合
・排他的論理和
命題P + 命題Q = 排他的論理和PQ = 0(偽)
・同値
命題P + 命題Q = 同値PQ = 1(真)

命題P = 1(真)、 命題Q = 0(偽)または命題P = 0(偽)、 命題Q = 1(真)の場合
・排他的論理和
命題P + 命題Q = 排他的論理和PQ = 1(真)
・同値の場合
命題P + 命題Q = 同値PQ = 0(偽)

命題P = 0(偽)、 命題Q = 0(偽)の場合
・排他的論理和
命題P + 命題Q = 排他的論理和PQ = 0(偽)
・同値
命題P + 命題Q = 同値PQ = 1(真)

また、同値はChapetr3で説明した論理積の演算結果と同じ結果ですが、両方の命題が0(偽)である場合に1(真)が返されるという点が異なります。

同値と論理積の違い

命題P = 0(偽)、 命題Q = 0(偽)の場合
・論理積
命題P + 命題Q = 論理積PQ = 0(偽)
・同値
命題P + 命題Q = 同値PQ = 1(真)

次に、論理演算における同値を表す記号について見ていきたいと思います。 論理演算における同値を表す記号は「↔」となります。 例えば、命題Aと命題Bの同値は以下のように表されます。

命題Aと命題Bの同値

A ↔ B

次に命題Aと命題Bについて、真偽値を代入した場合について見ていきたいと思います。

例1: 命題Aが1(真)、命題Bが1(真)の同値

A = 1, B = 1
A ↔ B = 1
同値A ↔ Bは1(真)となります。

例2: 命題Aが1(真)、命題Bが0(偽)の同値

A = 1, B = 0
A ↔ B = 0
同値A ↔ Bは0(偽)となります。

例3: 命題Aが0(偽)、命題Bが1(真)の同値

A = 1, B = 0
A ↔ B = 0
同値A ↔ Bは0(偽)となります。

例4: 命題Aが0(偽)、命題Bが0(偽)の同値

A = 0, B = 0
A ↔ B = 1
同値A ↔ Bは1(真)となります。

以上が論理演算における同値の説明になります。 同値の演算結果は排他的論理和の演算結果を全て反転させたもの、または論理積の演算結果のうち両方が0(偽)の場合に1(真)となる論理演算と捉えることができます。

Lesson 3 Chapter 7
真偽値、真理値表

Chapter7では真偽値と、真理値表について説明します。 これまでのChapterで見てきたように、論理演算とは、命題や真偽といった言語的なものを数学的に取り扱えるようにする方法です。 コンピュータ内部では、信号のON/OFFを使って、計算結果を1(真)、0(偽)で表します。 これを真偽値といい、各演算子の計算結果について表にしたものを真理値表と言います。 Chapter1で説明したとおり、真偽値は主にビット演算に用いられており、組み込みの現場では必須の知識となります。 全ての演算子に関する真理値表に関しては、Lesson7で詳しく説明しますので、Chapter7では論理積と論理和、否定の真偽値と真理値表を例に説明します。

まず、論理積の真偽値と真理値表について説明します。Chapter3で説明した通り、命題Aと命題Bの論理積は以下のように表されます。

命題Aと命題Bの論理積

A ∧ B

論理積A ∧ Bの真理値表は以下のように表されます。

3-7_1.png

この表を見ると、論理積では、AとBの積が出力されていることが分かります。 真理値表の値はChpater3で説明した論理積の結果と同じです。

次に、論理和の真偽値と真理値表について説明します。Chapter2で説明した通り、命題Aと命題Bの論理和は以下のように表されます。

命題Aと命題Bの論理和

A ∨ B

論理和A ∨ Bの真理値表は以下のように表されます。

3-7_2.png

この表を見ると、論理和では、AとBの和が出力されていることが分かります。 真理値表の値はChpater2で説明した論理和の結果と同じです。

最後に、否定のの真偽値と真理値表について説明します。Chapter1でも説明したとおり、命題Aの否定は以下のように表されます。

命題Aの否定

¬A

命題Aの否定の真理値表は以下のように表されます。

3-7_3.png

この表を見ると、否定では、入力値Aの値が反転していることが分かります。 真理値表の値はChpater1で説明した否定の結果と同じです。

以上が真偽値と真理値表の説明となります。 これらの例のように、真偽値とはビット演算などの論理演算をコンピュータが行えるようにしたものであり、真理値表とはその出力結果を表したものです。

以上でLesson3論理演算の説明を終わります。 Lesson3の内容はとても重要であるため、分からなくなったら何度も読み返して復習してください。