FE EXAM

論理演算(AND・OR・NOT)

AND・OR・NOT・XOR・NAND・NORの6種類の論理演算を、回路風ダイアグラムと真理値表で理解する。

INTERACTIVE LOGIC GATE
ON(1)
OFF(0)
出力
A
1
B
0
AND
出力
0
入力
A
1 (ON)
B
0 (OFF)
演算
出力
0
両方が1のときだけ1
真理値表 — AND
ABAND結果
000
010
100
111
解説

📌
論理演算とは

真 (1)偽 (0)演算結果真偽値(0と1)を入力し、演算規則に従って結果を返す

論理演算とは、真(1)偽(0)の2つの値だけを扱い、決められた規則で結果を出す演算です。コンピュータの内部では電気信号のON/OFFで0と1を表現しており、すべての計算の土台になっています。

論理演算はAND・OR・NOTの3つが基本で、さらにXOR・NAND・NORもよく使われます。上のツールで演算を切り替え、スイッチをON/OFFすると回路図と真理値表がリアルタイムに変わります。まず直感的に触ってみてください。

真理値表のハイライト行が現在のスイッチ状態に対応しています。全パターンを確認するにはスイッチを4通り試すだけです。

📌
日常の「かつ」「または」

AND: 両方の条件を満たすとき傘がある AND 雨が降る→ 傘をさすOR: どちらかでも満たすとき暑い OR のどが渇く→ 水を飲む

論理演算は数学のように見えますが、日常の言葉で考えるとシンプルです。「傘があるかつ雨が降っている → 傘をさす」がAND、「暑いまたはのどが渇く → 水を飲む」がORです。

注意が必要なのは、日常会話の「または」は「どちらか一方だけ」を意味することが多いですが、論理演算のORは「どちらか一方、または両方」を含みます。「どちらか一方だけ」を表すのはXOR(排他的論理和)です。

NOTは「〜ではない」です。「雨が降っていない(NOT 雨)」のように、条件を反転させます。上のツールでNOTを選ぶと、入力Aだけで結果が決まることを確認できます。

📌
AND・OR・NOTの真理値表

ABANDORNOT A
00001
01011
10010
11110

真理値表(しんりちひょう)は、入力の全パターンとその結果を一覧表にしたものです。上の表は基本3演算をまとめたものです。覚え方は次のとおりです。
AND両方1のときだけ1(1行だけ1になる)
ORどちらか1なら1(1行だけ0になる)
NOTひっくり返す

真理値表を丸暗記するよりも「ANDは厳しい門番、ORは優しい門番」とイメージすると忘れにくくなります。

📌
XOR(排他的論理和)の特殊性

XOR: 片方だけ1のとき → 100=001=110=111=0同じ値なら0、異なる値なら1

XOR(排他的論理和)は「片方だけが1のとき1、両方同じなら0」という演算です。ORと似ていますが、両方1のケースで結果が異なります(ORは1、XORは0)。

XORには面白い性質があります。「同じ値で2回XORすると元に戻る」(A⊕B⊕B = A)。この性質は暗号化パリティチェック(エラー検出)に利用されます。また、一時変数なしで2つの値を交換する「XORスワップ」というテクニックもあります。

上のツールでXORを選び、A=1, B=1 にしてみてください。ORなら1になるところが0になるのがXORの特徴です。

📌
NANDの万能性

NANDだけで基本3演算を構成NOT AA NAND AA AND B(A NAND B)NAND (A NAND B)A OR B(A NAND A)NAND (B NAND B)NANDは「万能ゲート」

NANDは「NOT AND」の略で、ANDの結果を反転した演算です。両方1のときだけ0、それ以外は1になります。一見地味ですが、実はNANDゲートだけであらゆる論理回路を構成できる「万能ゲート」です。

具体的には以下のように基本ゲートを作れます。
NOT:A NAND A(同じ入力を2つ入れる)
AND:(A NAND B) NAND (A NAND B)(NANDの結果をさらにNOT)
OR:(A NAND A) NAND (B NAND B)(各入力をNOTしてNAND)

実際のCPU内部の論理回路は、製造コスト削減のためにNANDゲートやNORゲートを中心に構成されています。NANDゲートだけですべての論理を構成できるという性質がここで活かされています。

📌
論理演算の優先順位

NOT優先度: AND優先度: OR優先度: >>

複数の論理演算が混在するとき、優先順位(どれから先に計算するか)が重要です。算数の掛け算が足し算より先に計算されるのと同じ仕組みです。

優先順位は次の順です。
NOT(最高):まず否定を計算する
AND(中):次に論理積を計算する
OR(最低):最後に論理和を計算する
たとえば「A OR B AND NOT C」は「A OR (B AND (NOT C))」と同じです。

迷ったときは括弧をつけるのが安全です。プログラミングでも「意図が明確になる括弧は省略しない」のがベストプラクティスです。

📌
プログラミングでの && と & の違い

演算子種類評価方法用途
&&論理AND短絡評価if文の条件
&ビットAND全ビット計算フラグ判定
||論理OR短絡評価if文の条件
|ビットOR全ビット計算フラグ設定

多くのプログラミング言語では&&(論理AND)と&(ビットAND)は別の演算子です。&&は短絡評価(左が偽なら右を評価しない)で、&は全ビットを計算します。

if文では&&を使い、ビットマスクやフラグ操作では&を使う、と覚えておけば両者を取り違えずに済みます。

練習問題

🎯
基本情報技術者 練習問題

Q1.A=1, B=0 のとき、A XOR B の結果はどれか。
A.0
B.1
C.不定
D.エラーになる
Q2.NAND演算の特徴として正しいものはどれか。
A.AND演算と同じ結果になる
B.NANDゲートだけで全ての論理回路を構成できる
C.入力が両方0のときだけ1になる
D.入力が1つの場合のみ使える

関連コンテンツ

論理演算(AND・OR・NOT) | Vizigo