Skip to the content.

最終更新日:2026年8月2日

まず結論

複数のNAND回路で構成された論理回路は、途中の出力に名前を付け、入力 00・01・10・11 を順番に入れて真理値表を作ると確実に判定できます。

4個のNANDを組み合わせた代表的な回路は、XOR(排他的論理和)として動作します。

AとBが同じ
→ 0

AとBが異なる
→ 1

XORの真理値表は次のとおりです。

A B Y
0 0 0
0 1 1
1 0 1
1 1 0

覚える一文はこれです。

複雑な論理回路は、途中出力に名前を付けて真理値表で判定する。

直感的な説明

XORは、2つのスイッチの状態が異なるときだけ点灯する回路です。

A=0、B=0
→ 同じなので0

A=0、B=1
→ 異なるので1

A=1、B=0
→ 異なるので1

A=1、B=1
→ 同じなので0

英語では、次のように覚えられます。

Different is 1. Same is 0.

論理回路が複雑に見えても、最終出力がこの真理値表と一致すればXORです。

定義・仕組み

NANDとは

NANDは、ANDの出力を反転した論理回路です。

NAND
=
A • B の否定

出力側に小さな丸が付いたAND記号がNANDです。

A B A • B NAND
0 0 0 1
0 1 0 1
1 0 0 1
1 1 1 0

NANDは、両方が1のときだけ0になります。

回路記号の小さな丸

論理回路の記号に付く小さな丸は、否定を表します。

AND + 出力に丸
→ NAND

OR + 出力に丸
→ NOR

丸を見落とすと、回路全体の出力を逆に判断してしまうため注意が必要です。

NANDは万能ゲート

NANDだけを組み合わせて、NOT・AND・OR・XORなどを作ることができます。

このように、基本的な論理回路をすべて構成できる素子を万能ゲートといいます。

NANDだけを組み合わせる
↓
NOTを作れる
ANDを作れる
ORを作れる
XORも作れる

4個のNANDでXORを作る

入力AとBから、最初のNAND出力を P とします。

P = NOT(A • B)

次に、上側と下側のNAND出力をそれぞれ QR とします。

Q = NOT(A • P)

R = NOT(B • P)

最後のNAND出力は、

Y = NOT(Q • R)

です。

この回路へ4通りの入力を与えると、XORと同じ真理値表になります。

このテーマは、基本情報技術者試験の論理回路やコンピュータ構成要素に関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。

科目Aでどう出る?

科目Aでは、複数の論理素子を組み合わせた回路と、等価な基本回路を選ぶ問題として出題されます。

解く手順

次の順番で解くと安全です。

1. 各素子の種類を確認する
2. 出力の丸を確認する
3. 途中出力にP、Q、Rなどの名前を付ける
4. 入力00、01、10、11を入れる
5. 最終出力の真理値表を作る
6. OR・AND・XOR・NORと比較する

途中出力を分ける

複雑な回路を一度に考えようとすると混乱しやすくなります。

P = 最初のNAND出力
Q = 上側のNAND出力
R = 下側のNAND出力
Y = 最終出力

のように分けると、1段ずつ確認できます。

4通りの入力を試す

2入力の論理回路では、入力の組合せは4通りだけです。

00
01
10
11

すべて試しても計算量は多くありません。

回路の形だけで推測するより、真理値表を作る方が確実です。

真理値表でXORを確認する

A=0、B=0

P = NAND(0, 0) = 1
Q = NAND(0, 1) = 1
R = NAND(0, 1) = 1
Y = NAND(1, 1) = 0

A=0、B=1

P = NAND(0, 1) = 1
Q = NAND(0, 1) = 1
R = NAND(1, 1) = 0
Y = NAND(1, 0) = 1

A=1、B=0

P = NAND(1, 0) = 1
Q = NAND(1, 1) = 0
R = NAND(0, 1) = 1
Y = NAND(0, 1) = 1

A=1、B=1

P = NAND(1, 1) = 0
Q = NAND(1, 0) = 1
R = NAND(1, 0) = 1
Y = NAND(1, 1) = 0

まとめると、次の結果になります。

A B Y
0 0 0
0 1 1
1 0 1
1 1 0

これはXORの真理値表と一致します。

OR・AND・XOR・NORの違い

4つの基本回路は、出力が1になる条件で切り分けます。

回路 1になる条件
OR 少なくとも一方が1
AND 両方とも1
XOR 2つの入力が異なる
NOR 両方とも0

真理値表で見ると次のとおりです。

A B OR AND XOR NOR
0 0 0 0 0 1
0 1 1 0 1 0
1 0 1 0 1 0
1 1 1 1 0 0

試験では、次の特徴を覚えておくと判断しやすくなります。

00だけ0
→ OR

11だけ1
→ AND

01と10だけ1
→ XOR

00だけ1
→ NOR

XORとORの違い

XORとORは、入力が 01 または 10 のときは同じ出力になります。

違いが出るのは 11 のときです。

A=1、B=1

OR
→ 1

XOR
→ 0

XORの「排他的」は、両方同時を除外するという意味です。

どちらか一方だけ1
→ XORは1

両方とも1
→ XORは0

論理式で確認する方法

XORは、次の論理式で表せます。

Y = A • NOT(B) + NOT(A) • B

これは、

Aが1でBが0
または
Aが0でBが1

という意味です。

つまり、入力が異なるときだけ1になります。

なお、このブログでは論理積を で表します。

A • B
→ AかつB

A + B
→ AまたはB

どんな場面で使う?

半加算器

XORは、2進数の加算で使われます。

1ビット同士を加算するとき、

和
→ XOR

桁上がり
→ AND

になります。

A B 桁上がり
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

ビット反転

あるビットと 1 をXORすると、値が反転します。

0 XOR 1 = 1
1 XOR 1 = 0

一方、0 とXORすると値は変わりません。

0 XOR 0 = 0
1 XOR 0 = 1

異なるかどうかの判定

2つのビットが異なるかを検出するときにも使えます。

同じ
→ 0

異なる
→ 1

よくある誤解・混同

最後の素子がNANDなので回路全体もNAND

誤りです。

複数のNANDを組み合わせることで、OR・AND・XORなど別の回路を作れます。

使っている素子
≠
回路全体の機能

回路全体の機能は、最終出力の真理値表で判断します。

回路図の形だけで答える

複雑な組合せ回路は、見た目だけでは正確に判断しにくいです。

途中出力に名前を付け、1段ずつ計算します。

出力側の丸を見落とす

丸は否定を表します。

AND
→ 両方1で1

NAND
→ 両方1で0

丸を見落とすと、出力がすべて逆になります。

XORとORを混同する

11 を入れて確認します。

OR(1, 1) = 1

XOR(1, 1) = 0

論理式だけで一気に変形する

論理式の変形に慣れていない場合は、真理値表の方が安全です。

論理式が複雑
→ 4通りを代入する

出力が分かった
→ 基本回路と比較する

科目Bでどう使う?

科目Bでは、論理演算を条件式やビット演算として読む力につながります。

Pythonでは、0と1を使ってXORを確認できます。

inputs = [(0, 0), (0, 1), (1, 0), (1, 1)]

for a, b in inputs:
    y = a ^ b
    print(a, b, y)

出力は次のとおりです。

0 0 0
0 1 1
1 0 1
1 1 0

NANDは、次のように表せます。

def nand(a: int, b: int) -> int:
    return 1 - (a & b)

4個のNANDでXORを構成すると、次のようになります。

def nand(a: int, b: int) -> int:
    return 1 - (a & b)


def xor_by_nand(a: int, b: int) -> int:
    p = nand(a, b)
    q = nand(a, p)
    r = nand(b, p)
    return nand(q, r)


for a, b in [(0, 0), (0, 1), (1, 0), (1, 1)]:
    print(a, b, xor_by_nand(a, b))

まとめ(試験直前用)

  • NANDはANDの出力を反転した回路
  • 出力側の小さな丸は否定を表す
  • NANDは万能ゲート
  • 複雑な回路は途中出力に名前を付ける
  • 2入力なら 00・01・10・11 の4通りを確認する
  • 真理値表が一致すれば等価な回路と判断できる
  • XORは入力が異なるときだけ1
  • ORとXORは 11 の出力で区別する
  • 4個のNANDでXORを構成できる
  • XORは半加算器の和やビット比較に使われる

同じなら0、異なれば1。これがXORを見抜く基準。

© 2024-2026 stemtazoo. All rights reserved.