資格道場 › レッスン一覧 › 基礎理論
基礎理論・5/13・18分

論理演算・論理回路と集合

ゴール

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 になります。

¬A¬BOR:¬A+¬B(=NAND)ABANDA・(¬A+¬B)A・¬A=0 が消える→ A・¬BANDB・(¬A+¬B)B・¬B=0 が消える→ ¬A・BORA・¬B + ¬A・B = XOR
回路図を上のゲートから1つずつ式にしていくと、A・¬A と B・¬B が0で消え、最後は A・¬B + ¬A・B(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 だけです。

AGA XOR G101000111001G=0:そのままG=1:反転
XOR は G=1 の所だけ A を反転させ、G=0 の所では A をそのまま通す

ド・モルガンの法則:否定をくぐらせると・と+が入れ替わる

ド・モルガンの法則とは、全体にかかる否定を括弧の中へ配るときの規則です。否定を配ると、・と+が入れ替わり、各変数の否定も付け替わります。

  • ¬(A・B) = ¬A + ¬B
  • ¬(A+B) = ¬A・¬B

手順は次の3つをセットで覚えます。

  1. ・と+を入れ替える
  2. 各変数の否定を付け替える(¬¬A は A に戻る)
  3. 全体の否定を外す

試験の選択肢には、このうちどれか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∪B)AB両円の外側¬A∪¬B = ¬(A∩B)AB重なり以外の全部
ド・モルガンの法則で、¬A∩¬B は両円の外側、¬A∪¬B は重なり以外の全部と、塗る所が違う
例題 1

全体否定をド・モルガンで外す

論理式 ¬((¬A+B)・(A+¬C)) と等しいものはどれか。ここで,・は論理積,+は論理和,¬X は X の否定を表す。
原文は否定を上線(オーバーライン)で表記。問題の論理式は (Ā+B)・(Ā…) ではなく、全体 (Ā+B)・(A+C̄) に長い上線が掛かる=式全体の否定。Ā は A の上線、C̄ は C の上線。選択肢中の ¬B, ¬A, ¬C も同様に上線付き。

ア A・¬B+¬A・C
イ ¬A・B+A・¬C
ウ (A+¬B)・(¬A+C)
エ (¬A+B)・(A+¬C)

出典:平成21年度 春期 基本情報技術者試験 午前 問3

解き方と答えを見る
  1. 元の式 ¬((¬A+B)・(A+¬C)) は「X・Y の否定」の形。X=¬A+B、Y=A+¬C と置く。
  2. ド・モルガン ¬(X・Y) = ¬X + ¬Y を当てる → ¬(¬A+B) + ¬(A+¬C)
  3. 各括弧にもう一度ド・モルガンを当てる:¬(¬A+B) = ¬¬A・¬B = A・¬B、¬(A+¬C) = ¬A・¬¬C = ¬A・C
  4. つなげると A・¬B + ¬A・C = ア
  5. イは・と+だけ入れ替えて変数の否定を付け替えていない式、ウは変数の否定だけ付け替えて・と+を入れ替えていない式、エは否定を外す前の元の式なので、いずれも誤り

答え:ア(A・¬B + ¬A・C)

例題 2

NAND だけで一致回路を作る

入力 X と Y の値が同じときにだけ,出力 Z に 1 を出力する回路はどれか。
各選択肢とも 2 段構成の回路。1 段目の上側ゲートは X と Y を直接入力,下側ゲートは X,Y をそれぞれ NOT で否定した値を入力とし,2 段目のゲートが 2 出力を入力として Z を出力する。 ア: 1段目 AND / AND,2段目 AND イ: 1段目 OR / OR,2段目 OR ウ: 1段目 NAND / NAND,2段目 NAND エ: 1段目 上 NOR(OR+○)/ 下 NAND(AND+○),2段目 NOR(OR+○)

ア [図] 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

出典:平成26年度 春期 基本情報技術者試験 午前 問22

解き方と答えを見る
  1. 求める回路は「X と Y が同じときだけ1」=一致回路で、式は Z = X・Y + ¬X・¬Y
  2. ウの1段目:上の NAND = ¬(X・Y)、下の NAND = ¬(¬X・¬Y)
  3. 2段目の NAND:Z = ¬( ¬(X・Y) ・ ¬(¬X・¬Y) )
  4. ド・モルガン ¬(P・Q) = ¬P+¬Q で外すと、二重否定が元に戻って Z = X・Y + ¬X・¬Y = 一致回路
  5. 代入して確認: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
  6. ア(AND→AND)は X・Y と ¬X・¬Y が同時に1にならないので常に0、イ(OR→OR)は X+Y+¬X+¬Y で常に1。どちらも一致回路にならない

答え:ウ(NAND 3個の構成)

例題 3

2つの結果から未知の演算 □ を逆算する

X 及び Y はそれぞれ 0 又は 1 の値をとる変数である。X □Y を X と Y の論理演算としたとき,次の真理値表が得られた。X □Y の真理値表はどれか。
XYX AND ( X □Y )X OR ( X □Y )
0001
0101
1001
1111

ア [表] 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

解き方と答えを見る
  1. □ の結果を f と書く
  2. X=0 の行(1・2行目):X AND f は必ず0なので手がかりにならない。X OR f = 0 OR f = f で、表ではこれが1 → f(0,0)=1、f(0,1)=1
  3. 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
  4. f は上から 1,1,0,1 → ウ
  5. これは含意 X→Y(¬X+Y)の真理値表で、X=1 かつ Y=0 のときだけ0になる

答え:ウ(0,0→1 / 0,1→1 / 1,0→0 / 1,1→1)

例題 4

含意の連鎖で Q と R を決める

P, Q, R はいずれも命題である。命題 P の真理値は真であり,命題 (not P) or Q 及び命題 (not Q) or R のいずれの真理値も真であることが分かっている。Q, R の真理値はどれか。ここで,X or Y は X と Y の論理和,not X は X の否定を表す。
選択肢は表(列: Q, R)
QR
ア偽偽
イ偽真
ウ真偽
エ真真

ア Q:偽,R:偽
イ Q:偽,R:真
ウ Q:真,R:偽
エ Q:真,R:真

出典:平成31年度 春期 基本情報技術者試験 午前 問3

解き方と答えを見る
  1. P は真なので、not P は偽
  2. (not P) or Q が真で not P が偽 → Q が真でなければならない
  3. Q が真なので、not Q は偽
  4. (not Q) or R が真で not Q が偽 → R が真でなければならない
  5. Q も R も真 → エ

答え:エ(Q:真、R:真)

例題 5

eq の入れ子の必要十分条件

関数eq(X,Y)は,引数XとYの値が等しければ1を返し,異なれば0を返す。 整数A,B,Cについて,eq(eq(A,B),eq(B,C))を呼び出したとき,1が返ってくるための必要十分条件はどれか。

ア (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

解き方と答えを見る
  1. 内側の eq(A,B) と eq(B,C) は、それぞれ0か1
  2. 外側の eq が1 ⇔ 2つの値が等しい ⇔ (1,1) か (0,0)
  3. (1,1) は A=B かつ B=C、(0,0) は A≠B かつ B≠C → 合わせてア
  4. 反例で他を消す:A,B,C=1,2,3 なら (0,0) で1が返るが、ウ・エの条件には当てはまらない(取りこぼし)
  5. A,B,C=1,1,2 なら eq(1,1)=1、eq(1,2)=0 で0が返るが、イ・エの条件には当てはまってしまう(余計)

答え:ア((A=B かつ B=C) 又は (A≠B かつ B≠C))

例題 6

流れ図の条件をド・モルガンで書き換える

右の流れ図が左の流れ図と同じ動作をするために,a,b に入る Yes と No の組合せはどれか。
左の流れ図:上から入り,判断「P でない 又は Q」。Yes は下の「処理」へ進み,No は右へ出て処理を迂回し,処理の下の合流点へ入る。 右の流れ図:上から入り,判断「P」。右側の出口(ラベル a)は右へ出て下降し,「処理」の直前の合流線へ入る(処理は実行される)。下側の出口は判断「Q」へ進む。判断「Q」:左側の出口(ラベル b)は左へ出て下降し,「処理」の下の合流点へ入る(処理を迂回)。下側の出口は処理の直前の合流線へ進み「処理」を実行する。 選択肢は a,b 列の表(ア No/No,イ No/Yes,ウ Yes/No,エ Yes/Yes)。

ア a:No,b:No
イ a:No,b:Yes
ウ a:Yes,b:No
エ a:Yes,b:Yes

出典:平成25年度 秋期 基本情報技術者試験 午前 問8

解き方と答えを見る
  1. 左の流れ図:「P でない 又は Q」が Yes なら処理を実行する。つまり処理を実行するのは、P が偽のとき、または Q が真のとき
  2. 右の流れ図:P の判断で出口 a に進めば処理を実行し、もう一方の出口は Q の判断へ進む
  3. P が偽なら Q に関係なく処理を実行すべき → P で a に進むのは No のとき:a=No
  4. P が真(Yes)なら Q 次第。Q が真なら処理へ(下の出口)、Q が偽なら迂回する(出口 b)→ b=No
  5. 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)

論理積 ろんりせき(AND)
2つの入力が両方1のときだけ1を出す演算。
⚠ 論理和(OR)は片方が1なら1。式では・が論理積、+が論理和
論理和 ろんりわ(OR)
2つの入力のどちらかが1なら1を出す演算。
⚠ 排他的論理和は両方1のとき0になる点が違う
否定論理積 ひていろんりせき(NAND: Not AND)
AND の出力を反転したもので、両方1のときだけ0を出す演算。
⚠ NOR(両方0のときだけ1)と混同しやすい。NAND は 1110、NOR は 1000
否定論理和 ひていろんりわ(NOR: Not OR)
OR の出力を反転したもので、両方0のときだけ1を出す演算。
⚠ XOR の否定(一致回路 1001)と取り違えやすい。NOR は 00 のときだけ1
排他的論理和 はいたてきろんりわ(XOR: eXclusive OR)
2つの入力が異なるときに1を出す演算で、式は A・¬B + ¬A・B。
⚠ 一致回路(XNOR)は真逆で、同じときに1
一致回路 いっちかいろ(XNOR: eXclusive NOR)
2つの入力が同じときに1を出す回路で、式は A・B + ¬A・¬B。
⚠ XOR の否定であって NOR ではない。真理値表は 1001
等価演算 とうかえんざん
2つの入力が等しいとき真になる演算で、一致回路(XNOR)と同じもの。
⚠ 否定論理和(NOR)と混同しやすい。ベン図では重なりも塗られる
相補演算 そうほえんざん
どんな入力でも結果が互いに否定の関係になる2つの演算の関係。
⚠ XOR の相補演算は等価演算(XNOR)。NOR ではない
真理値表 しんりちひょう
入力の全組合せと、それぞれの出力を並べた表。
ド・モルガンの法則 ど・もるがんのほうそく
全体の否定を中に配ると、・と+が入れ替わり、各項の否定が付け替わるという規則。
⚠ ・と+の入れ替えだけ、または否定の付け替えだけで止めた式がひっかけになる
積和形 せきわけい
変数の積(AND)を和(OR)でつないだ論理式の形で、真理値表の1の行から作れる。
含意 がんい(implication)
「P ならば Q」を表す演算で、¬P∨Q と同じ。P が真で Q が偽のときだけ偽になる。
⚠ 論理和と違い、P が真なら Q が真でないと全体が偽になる
積集合 せきしゅうごう(∩)
2つの集合の両方に属する要素の集合。
⚠ 和集合(∪)はどちらかに属する要素。∩は AND、∪は OR に対応
和集合 わしゅうごう(∪)
2つの集合の少なくとも一方に属する要素の集合。
補集合 ほしゅうごう
全体集合のうち、その集合に属さない要素の集合。
⚠ ¬A∩¬B(両方の外)と ¬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)という。

このレッスンの過去問

このレッスンで稽古する