基本情報技術者試験の学習中に、論理演算とベン図に関する問題を解きました。
今回扱ったのは、排他的論理和(XOR)とその相補演算についての問題です。
結論から言うと、
- XOR は「A と B が異なるときに真」
- その反対は「A と B が同じときに真」
- したがって相補演算は「等価演算」
という整理になります。
ここまでは、言葉だけで考えればまだ理解できます。
しかし、ベン図で考えようとした瞬間にかなり混乱しました。
混乱した点
特に引っかかったのは、次のような図の読み方です。
[Aだけ] + [Bだけ]
これは XOR を表します。
つまり、
A だけが真
B だけが真
のどちらかの場合に真になります。
ただ、最初に見たときはこう感じました。
A の部分も塗られていて、B の部分も塗られているなら、
結果的に A も B も真なのではないか?
この感覚がなかなか抜けませんでした。
自分は、塗られている領域全体を見て「A も B も塗られている」と考えてしまっていました。
しかし、ベン図で論理演算を読むときは、塗られている全体を見るのではなく、ある対象がどの領域に入るかを考える必要があります。
例えば、ある対象 x があるとします。
x は次のどれか一つの領域にしか入りません。
x の位置 A B
A だけ 1 0
重なり 1 1
B だけ 0 1
外側 0 0
この考え方に従うと、
[Aだけ] + [Bだけ]
は、
x が A だけの領域にある場合は真
x が B だけの領域にある場合も真
しかし、x が重なりにある場合は真ではない
という意味になります。
つまり、「A も B も真」ではなく、
A と B のうち、どちらか一方だけが真
という意味になります。
これが XOR です。
自分にはベン図より真理値表の方が合っている
正直に言うと、今回のベン図の読み方はかなり直感に反しました。
「A 側も塗られていて、B 側も塗られているのに、なぜ両方真ではないのか」
という感覚が強く残ったからです。
ただ、真理値表で見ると少し整理しやすくなりました。
A B XOR
0 0 0
0 1 1
1 0 1
1 1 0
XOR は、A と B が異なるときだけ真になります。
つまり、
A ≠ B のとき真
です。
そして、その反対は、
A = B のとき真
です。
これは等価演算です。
A B 等価演算
0 0 1
0 1 0
1 0 0
1 1 1
こうして見ると、
XOR = 異なるとき真
等価演算 = 同じとき真
という対応関係が分かりやすくなります。
今回の学習メモ
今回、自分にとって分かりやすかった整理は次の通りです。
XOR = A と B が異なるとき真
等価演算 = A と B が同じとき真
ベン図で覚えるなら、最低限次のように整理しておきます。
塗られている部分 意味
重なりだけ AND
2つの円の内側全体 OR
Aだけ + Bだけ XOR
外側 + 重なり 等価演算
外側だけ NOR
ただし、自分の場合はベン図で無理に理解しようとすると混乱しやすいと感じました。
そのため、今後はまず真理値表で考えます。
まとめ
今回の問題で重要なのは、ベン図を完璧に読めることよりも、XOR と等価演算の関係を理解することだと思いました。
XOR は「異なるとき真」
その反対は「同じとき真」
したがって、XOR の相補演算は等価演算
ベン図の読み方にはかなり苦戦しましたが、自分に合わない理解方法にこだわりすぎず、真理値表や言葉の意味から整理する方がよい場合もあると感じました。