論理演算・論理回路と集合
AND・OR・NOT から NAND・NOR・XOR・XNOR までの真理値を即答できるようになる。そのうえで、論理回路・論理式・真理値表・集合のベン図を互いに読み替え、ド・モルガンの法則や含意の過去問を自力で解けるようになる。
論理演算と集合は科目Aでほぼ毎回出ます。型を覚えれば1問1〜2分で確実に取れる分野です。if 文の条件や SQL の WHERE 句を正しく書き換える力にもそのままつながります。
このレッスンで稽古する(用語チェック・過去問)結論:各演算は「どんなときに1になるか」の一言で覚える
真理値表は、入力の全組合せと出力を並べた表です。各演算の「1になる条件」を一言で覚えておけば、真理値表はその場で毎回作れます。なお、試験では否定を文字の上の横線(上線)で書きますが、このレッスンでは ¬ と書きます。
| 演算 | 日本語名・式 | 1になる条件 | 出力(AB=00,01,10,11 の順) |
|---|---|---|---|
| AND | 論理積・A・B | 両方1 | 0001 |
| OR | 論理和・A+B | どちらか1 | 0111 |
| NOT | 否定・¬A | 入力が0 | 1入力:0→1、1→0 |
| NAND | 否定論理積・¬(A・B) | 両方1以外 | 1110 |
| NOR | 否定論理和・¬(A+B) | 両方0のときだけ | 1000 |
| XOR | 排他的論理和 | 2つが違う | 0110 |
| XNOR | 一致回路・等価演算 | 2つが同じ | 1001 |
頭に N が付くと、出力が全部ひっくり返ります。 だから覚えるのは AND・OR・XOR の3つだけで済みます。NOR の穴埋め問題も、OR の 0111 を反転した 1000 と即答できます。
XOR は「違えば1」、XNOR(一致回路)は「同じなら1」
XOR と XNOR は互いに否定の関係です。 一方の結果が常にもう一方の否定になる関係を相補演算といいます。出題が多いのは一致回路(XNOR)で、真逆の XOR と取り違えさせるのが最大のひっかけです。
| XOR(排他的論理和) | XNOR(一致回路・等価演算) | |
|---|---|---|
| 1になる条件 | AとBが違う | AとBが同じ |
| 真理値表 | 0110 | 1001 |
| 積和形の式 | A・¬B + ¬A・B | A・B + ¬A・¬B |
| ベン図で塗る所 | 2円の重ならない部分 | 2円の重なり+両円の外側 |
| 別の書き方 | (A+B)・¬(A・B) | ¬(A・¬B + ¬A・B) |
たとえるなら、階段の上と下にある照明スイッチです。どちらを切り替えても灯りが反転するのは、点灯が「2つのスイッチの状態が同じか違うか」だけで決まる XOR(または XNOR)の配線だからです。
回路図の問題は、ゲートを左から1つずつ式にして、最後に展開するだけで解けます。
- ¬A と ¬B を OR に入れる → ¬A+¬B(¬(A・B) と同じ=NAND)
- それを A との AND、B との AND に分け、2つを OR → A・(¬A+¬B) + B・(¬A+¬B)
- 展開すると A・¬A と B・¬B は常に0なので消える → A・¬B + ¬A・B = XOR
ビット操作の問題も考え方は同じです。(L1 OR L2) AND NOT(L1 AND L2) は「どちらかが1」から「両方1」を除いた形なので、XOR になります。
XOR で「条件付き反転」
XOR は「もう一方の入力が1のときだけ反転するスイッチ」として使えます。 A XOR 0 = A、A XOR 1 = ¬A となるからです。
| G | A AND G | A OR G | A XOR G |
|---|---|---|---|
| 0 | 常に0 | A のまま | A のまま |
| 1 | A のまま(反転しない) | 常に1 | ¬A(反転) |
AND(A,G) は、G=0 のとき常に0、G=1 のとき A のままで反転しません。OR(A,G) は G=1 のとき常に1 です。どちらも G の値で A を反転させる動きにならないので、「G=0 ならそのまま、G=1 なら反転」を作れるのは XOR だけです。
ド・モルガンの法則:否定をくぐらせると・と+が入れ替わる
ド・モルガンの法則とは、全体にかかる否定を括弧の中へ配るときの規則です。否定を配ると、・と+が入れ替わり、各変数の否定も付け替わります。
- ¬(A・B) = ¬A + ¬B
- ¬(A+B) = ¬A・¬B
手順は次の3つをセットで覚えます。
- ・と+を入れ替える
- 各変数の否定を付け替える(¬¬A は A に戻る)
- 全体の否定を外す
試験の選択肢には、このうちどれか1つを忘れた式がそのまま並びます。
プログラムの条件にも同じ規則が使えます。たとえば「P でない又は Q」の否定は「P かつ Q でない」です。流れ図の分岐を書き換える問題は、これで「処理を通る条件」と「迂回する条件」を整理すれば解けます。
真理値表から式を選ぶ:作るより代入
真理値表から式を選ぶ問題は、式を一から作るより、選択肢に値を代入して表と照合するほうが速くて確実です。
- 式を作る場合:F=1 の行ごとに、その行だけで1になる積を作り、+でつなぎます。これを積和形といいます。例:X=0、Y=0、Z=1 の行なら ¬X・¬Y・Z。
- 選択肢から選ぶ場合:F=0 の行と F=1 の行を1〜2個ずつ選んで代入し、表と合わない選択肢を消します。
2つの演算結果から未知の演算 X□Y を逆算させる問題(令和6年度の公開問題)もあります。1行ずつ「この行で □ が0なら、1なら」を試すと、答えは1つに決まります。
含意:(not P) or Q は「P ならば Q」
「(not P) or Q」は「P ならば Q」(含意)の書き換えです。P が真なのにこの式が真なら、Q は必ず真です。 論理和が真になるには、片方が真であれば十分です。しかし P が真だと not P は偽になるので、残る Q が真でなければなりません。
| P | Q | (not P) or Q |
|---|---|---|
| 偽 | 偽 | 真 |
| 偽 | 真 | 真 |
| 真 | 偽 | 偽 |
| 真 | 真 | 真 |
たとえるなら「雨なら傘を持つ」という約束です。約束が守られていて(式が真)、実際に雨が降った(P が真)なら、傘を持っている(Q が真)以外にありえません。この連鎖を2回たどると、Q も R も真と決まります。
eq の入れ子は「一致の一致」
eq(eq(A,B), eq(B,C)) が1になるのは、内側の2つの eq が同じ値のときです。つまり「両方1」か「両方0」のどちらかです。 両方1は「A=B かつ B=C」、両方0は「A≠B かつ B≠C」にあたります。外側の eq は一致回路(XNOR)と同じ働きをしている、と見ると速く解けます。
集合とベン図:論理演算の言い換え
集合の演算は論理演算の言い換えです。 積集合(∩)が AND、和集合(∪)が OR、補集合(全体集合のうちその集合に属さない部分)が NOT に対応します。ド・モルガンの法則も集合でそのまま成り立ちます。
| 集合 | 意味 | 論理演算 | ベン図で塗る所 |
|---|---|---|---|
| A∩B(積集合) | 両方に属す | A・B | 重なり |
| A∪B(和集合) | どちらかに属す | A+B | 両円の全体 |
| ¬A(補集合) | A に属さない | ¬A | A の円の外 |
| A−B(差集合) | A に属し B に属さない | A・¬B | A の円から B を除いた所 |
- ド・モルガン:¬A∩¬B = ¬(A∪B) で、両円の外側にあたります。¬A−B(¬A から B を除いたもの)も同じ領域です。一方、¬A∪¬B は ¬(A∩B)(重なり以外の全部)で、別の領域です。
- 3円のベン図:∩でつながった条件を、A の中か外か、B の中か外か、C の中か外か、と1つずつ確かめて領域を決めます。たとえば ¬A∩B∩C は「B と C だけが重なる部分」です。
- 分配法則:(A∪B)∩C = (A∩C)∪(B∩C)、(A∩B)∪C = (A∪C)∩(B∪C)。1つ目は掛け算の a(b+c)=ab+ac と同じ形です。集合では∩と∪を逆にした2つ目も成り立ちます。
- 包含(⊆:部分集合である):A∩B ⊆ A ⊆ A∪¬B のように「狭い→広い」の鎖をつなげられれば常に成り立ちます。迷ったら、具体的な要素を1つ置いて反例を探します。
全体否定をド・モルガンで外す
ア A・¬B+¬A・C
イ ¬A・B+A・¬C
ウ (A+¬B)・(¬A+C)
エ (¬A+B)・(A+¬C)
解き方と答えを見る
- 元の式 ¬((¬A+B)・(A+¬C)) は「X・Y の否定」の形。X=¬A+B、Y=A+¬C と置く。
- ド・モルガン ¬(X・Y) = ¬X + ¬Y を当てる → ¬(¬A+B) + ¬(A+¬C)
- 各括弧にもう一度ド・モルガンを当てる:¬(¬A+B) = ¬¬A・¬B = A・¬B、¬(A+¬C) = ¬A・¬¬C = ¬A・C
- つなげると A・¬B + ¬A・C = ア
- イは・と+だけ入れ替えて変数の否定を付け替えていない式、ウは変数の否定だけ付け替えて・と+を入れ替えていない式、エは否定を外す前の元の式なので、いずれも誤り
答え:ア(A・¬B + ¬A・C)
NAND だけで一致回路を作る
ア [図] X,Y を入力とする AND と,¬X,¬Y(各 NOT 経由)を入力とする AND の出力を AND 素子で結合して Z
イ [図] X,Y を入力とする OR と,¬X,¬Y(各 NOT 経由)を入力とする OR の出力を OR 素子で結合して Z
ウ [図] X,Y を入力とする NAND と,¬X,¬Y(各 NOT 経由)を入力とする NAND の出力を NAND 素子で結合して Z
エ [図] X,Y を入力とする NOR と,¬X,¬Y(各 NOT 経由)を入力とする NAND の出力を NOR 素子で結合して Z
解き方と答えを見る
- 求める回路は「X と Y が同じときだけ1」=一致回路で、式は Z = X・Y + ¬X・¬Y
- ウの1段目:上の NAND = ¬(X・Y)、下の NAND = ¬(¬X・¬Y)
- 2段目の NAND:Z = ¬( ¬(X・Y) ・ ¬(¬X・¬Y) )
- ド・モルガン ¬(P・Q) = ¬P+¬Q で外すと、二重否定が元に戻って Z = X・Y + ¬X・¬Y = 一致回路
- 代入して確認:X=0,Y=1 → 上 NAND=1、下 NAND=¬(1・0)=1 → Z=¬(1・1)=0。X=1,Y=1 → 上 NAND=0、下 NAND=¬(0・0)=1 → Z=¬(0・1)=1。X=0,Y=0 → 上 NAND=1、下 NAND=¬(1・1)=0 → Z=¬(1・0)=1
- ア(AND→AND)は X・Y と ¬X・¬Y が同時に1にならないので常に0、イ(OR→OR)は X+Y+¬X+¬Y で常に1。どちらも一致回路にならない
答え:ウ(NAND 3個の構成)
2つの結果から未知の演算 □ を逆算する
| X | Y | X AND ( X □Y ) | X OR ( X □Y ) |
|---|---|---|---|
| 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 |
ア [表] X,Y,X□Y: (0,0,0) (0,1,0) (1,0,0) (1,1,1)
イ [表] X,Y,X□Y: (0,0,0) (0,1,1) (1,0,0) (1,1,1)
ウ [表] X,Y,X□Y: (0,0,1) (0,1,1) (1,0,0) (1,1,1)
エ [表] X,Y,X□Y: (0,0,1) (0,1,1) (1,0,1) (1,1,0)
出典:令和6年度 基本情報技術者試験 科目A 公開問題 問1
解き方と答えを見る
- □ の結果を f と書く
- X=0 の行(1・2行目):X AND f は必ず0なので手がかりにならない。X OR f = 0 OR f = f で、表ではこれが1 → f(0,0)=1、f(0,1)=1
- X=1 の行(3・4行目):X OR f は必ず1なので手がかりにならない。X AND f = 1 AND f = f で、表では 0、1 → f(1,0)=0、f(1,1)=1
- f は上から 1,1,0,1 → ウ
- これは含意 X→Y(¬X+Y)の真理値表で、X=1 かつ Y=0 のときだけ0になる
答え:ウ(0,0→1 / 0,1→1 / 1,0→0 / 1,1→1)
含意の連鎖で Q と R を決める
| Q | R | |
|---|---|---|
| ア | 偽 | 偽 |
| イ | 偽 | 真 |
| ウ | 真 | 偽 |
| エ | 真 | 真 |
ア Q:偽,R:偽
イ Q:偽,R:真
ウ Q:真,R:偽
エ Q:真,R:真
解き方と答えを見る
- P は真なので、not P は偽
- (not P) or Q が真で not P が偽 → Q が真でなければならない
- Q が真なので、not Q は偽
- (not Q) or R が真で not Q が偽 → R が真でなければならない
- Q も R も真 → エ
答え:エ(Q:真、R:真)
eq の入れ子の必要十分条件
ア (A = B かつ B = C) 又は (A ≠ B かつ B ≠ C)
イ (A = B かつ B = C) 又は (A ≠ B 又は B ≠ C)
ウ (A = B かつ B = C) 又は A = C
エ (A = B 又は B = C) 又は A = C
出典:基本情報技術者試験 科目A免除 修了試験 20170122 実施分 問3
解き方と答えを見る
- 内側の eq(A,B) と eq(B,C) は、それぞれ0か1
- 外側の eq が1 ⇔ 2つの値が等しい ⇔ (1,1) か (0,0)
- (1,1) は A=B かつ B=C、(0,0) は A≠B かつ B≠C → 合わせてア
- 反例で他を消す:A,B,C=1,2,3 なら (0,0) で1が返るが、ウ・エの条件には当てはまらない(取りこぼし)
- A,B,C=1,1,2 なら eq(1,1)=1、eq(1,2)=0 で0が返るが、イ・エの条件には当てはまってしまう(余計)
答え:ア((A=B かつ B=C) 又は (A≠B かつ B≠C))
流れ図の条件をド・モルガンで書き換える
ア a:No,b:No
イ a:No,b:Yes
ウ a:Yes,b:No
エ a:Yes,b:Yes
解き方と答えを見る
- 左の流れ図:「P でない 又は Q」が Yes なら処理を実行する。つまり処理を実行するのは、P が偽のとき、または Q が真のとき
- 右の流れ図:P の判断で出口 a に進めば処理を実行し、もう一方の出口は Q の判断へ進む
- P が偽なら Q に関係なく処理を実行すべき → P で a に進むのは No のとき:a=No
- P が真(Yes)なら Q 次第。Q が真なら処理へ(下の出口)、Q が偽なら迂回する(出口 b)→ b=No
- a=No、b=No → ア。処理を迂回する条件は「P かつ Q でない」で、左の条件をド・モルガンで否定したものと一致する
答え:ア(a:No、b:No)
要点(試験直前に読む)
- N が付くと出力が全部反転する。AND 0001・OR 0111・XOR 0110 を覚え、NAND 1110・NOR 1000・XNOR 1001 は反転で作る
- XOR=違えば1(A・¬B+¬A・B)、一致回路=同じなら1(A・B+¬A・¬B)。2つは相補演算の関係
- ド・モルガンは3点セット:・と+を入れ替え、各変数の否定を付け替え、全体の否定を外す
- 回路図はゲートを左から式にして展開する。真理値表の問題は選択肢に代入して照合する
- (not P) or Q が真で P が真なら、Q は必ず真
- 集合は ∩=AND、∪=OR、補集合=NOT。¬A∩¬B は両円の外=¬A−B
ひっかけ
- XOR(0110)と一致回路(1001)の取り違え。「同じとき1」と問われたら A・B+¬A・¬B を探す
- XOR の否定(相補演算)を NOR と答えさせる。NOR は 00 のときだけ1で、11 のときは0
- ド・モルガンの途中で止めた式が選択肢に並ぶ。・と+の入れ替えと否定の付け替えの両方ができているか確認する
- 「論理和は片方が真なら真」につられて Q を偽にさせる。P が真なら not P は偽なので、Q が真でないと式は真にならない
- ¬A∩¬B と ¬A∪¬B の取り違え。前者は両円の外、後者は重なり以外の全部
用語(18)
2つの入力が両方1のときだけ1を出す演算。
⚠ 論理和(OR)は片方が1なら1。式では・が論理積、+が論理和
2つの入力のどちらかが1なら1を出す演算。
⚠ 排他的論理和は両方1のとき0になる点が違う
AND の出力を反転したもので、両方1のときだけ0を出す演算。
⚠ NOR(両方0のときだけ1)と混同しやすい。NAND は 1110、NOR は 1000
OR の出力を反転したもので、両方0のときだけ1を出す演算。
⚠ XOR の否定(一致回路 1001)と取り違えやすい。NOR は 00 のときだけ1
2つの入力が異なるときに1を出す演算で、式は A・¬B + ¬A・B。
⚠ 一致回路(XNOR)は真逆で、同じときに1
2つの入力が同じときに1を出す回路で、式は A・B + ¬A・¬B。
⚠ XOR の否定であって NOR ではない。真理値表は 1001
2つの入力が等しいとき真になる演算で、一致回路(XNOR)と同じもの。
⚠ 否定論理和(NOR)と混同しやすい。ベン図では重なりも塗られる
どんな入力でも結果が互いに否定の関係になる2つの演算の関係。
⚠ XOR の相補演算は等価演算(XNOR)。NOR ではない
入力の全組合せと、それぞれの出力を並べた表。
全体の否定を中に配ると、・と+が入れ替わり、各項の否定が付け替わるという規則。
⚠ ・と+の入れ替えだけ、または否定の付け替えだけで止めた式がひっかけになる
変数の積(AND)を和(OR)でつないだ論理式の形で、真理値表の1の行から作れる。
「P ならば Q」を表す演算で、¬P∨Q と同じ。P が真で Q が偽のときだけ偽になる。
⚠ 論理和と違い、P が真なら Q が真でないと全体が偽になる
2つの集合の両方に属する要素の集合。
⚠ 和集合(∪)はどちらかに属する要素。∩は AND、∪は OR に対応
2つの集合の少なくとも一方に属する要素の集合。
全体集合のうち、その集合に属さない要素の集合。
⚠ ¬A∩¬B(両方の外)と ¬A∪¬B(重なり以外)は別の領域
A に属し B に属さない要素の集合で、A∩¬B と同じ。
(A∪B)∩C = (A∩C)∪(B∩C) のように、片方の演算をもう片方に配れる規則。集合では∩と∪のどちら向きでも成り立つ。
⚠ (A∪B)∩C を (A∪C)∩(B∪C) とする誤りは、配る向きを取り違えたもの
A の要素がすべて B にも含まれるとき、A は B の部分集合(A⊆B)という。
このレッスンの過去問
- 基本論理ゲートの真理値(NOR)基本情報技術者試験 科目A免除 修了試験 20141221 実施分 問2
- 排他的論理和(XOR)の論理回路構成基本情報技術者試験 科目A免除 修了試験 20211212 実施分 問1
- 一致回路(XNOR)の論理回路構成平成26年度 春期 基本情報技術者試験 午前 問22
- ド・モルガンの法則による論理式変換平成25年度 秋期 基本情報技術者試験 午前 問8
- 真理値表からの論理式導出令和6年度 基本情報技術者試験 科目A 公開問題 問1
- 命題論理の含意(¬P∨Q)による真理値推論平成31年度 春期 基本情報技術者試験 午前 問3
- 等価判定関数eqの入れ子の必要十分条件基本情報技術者試験 科目A免除 修了試験 20170122 実施分 問3
- XORによる条件付き反転回路基本情報技術者試験 科目A免除 修了試験 20181209 実施分 問23
- 集合演算式とベン図の対応平成25年度 秋期 基本情報技術者試験 午前 問1
- 集合演算の分配法則による等式判定平成29年度 春期 基本情報技術者試験 午前 問1
- 集合の包含関係の常時成立判定基本情報技術者試験 科目A免除 修了試験 20121216 実施分 問1