TERM GUIDE · DIGITAL

論理演算

「論理演算」とは

論理演算とは、真・偽や0・1を組み合わせて、新しい真・偽や0・1を求める演算です。

コンピュータでは、条件が成り立つことを1、成り立たないことを0として扱うことが多くあります。また、2進数の各ビットも0または1なので、論理演算をビットごとに行うことができます。

代表的な論理演算には、AND、OR、NOT、XORがあります。

AND(論理積)

ANDは、両方が1のときだけ1になる演算です。

ANDの真理値表
ABA AND B
000
010
100
111

条件を表す場合には「かつ」に対応します。

例えば、

2024年でありかつ、最高気温が35℃以上である
→ 年=2024 AND 最高気温>=35

という条件を表せます。

ビット演算では、対応するビットごとにANDを計算して、

1010 AND 1100 = 1000

のようになります。

ANDには、Xを0または1とすると、次の性質があります。

X AND 1 = X
X AND 0 = 0

この性質を利用すると、必要なビットだけを残すマスク処理ができます。

例えば、8ビットの値abcdefghの下位4ビットだけを残したい場合、00001111とのANDをとります。

    abcdefgh
AND 00001111
------------
    0000efgh

この計算では、マスク側が0の部分では元のビット(abcd)が0だったか1だったかにかかわらず、結果を0にして隠せます。マスク側が1の部分では、元のビットをそのまま残せます。

OR(論理和)

ORは、少なくとも一方が1なら1になる演算です。

ORの真理値表
ABA OR B
000
011
101
111

条件を表す場合には「または」に対応します。

例えば、

7月または8月
→ 月=7 OR 月=8

という条件を表せます。

ただし、日常的な「または」とは異なり、両方という場合も含まれます。例えば、「食後に、コーヒーまたは紅茶が付きます」という条件を論理的に考えると、「両方ください」という場合も排除されません。

NOT(否定)

NOTは、0と1を反転する演算です。

NOTの真理値表
ANOT A
01
10

例えば、4ビットの

1110

を反転(NOT)すると、

0001

となります。

XOR(排他的論理和)

XORは、二つの入力が異なるときだけ1になる演算です。EORと表記されることもあります。

XORの真理値表
ABA XOR B
000
011
101
110

例えば、

    1010
XOR 0110
--------
    1100

となります。

AND・OR・XORの違い

AND、OR、XORは混同しやすいですが、次のように考えると区別しやすくなります。

各演算が1になる条件
演算1になる条件
AND両方が1
OR少なくとも一方が1
XOR一方だけが1

論理演算と検索条件

データベースや検索では、論理演算を使って条件を組み合わせます。

例えば、

札幌または函館にある日本料理店
→ (札幌 OR 函館) AND 日本料理

と表せます。

また、

男性で、20歳未満または65歳以上
→ 男性 AND (20歳未満 OR 65歳以上)

となります。

ANDとORが混在するときは、どの条件をまとめるかを括弧で明確にすることが重要です。

表計算での論理演算

表計算ソフトでもANDやORは条件判定に利用されます。

例えば、

A2とB2の合計が120点以上で、A2とB2がどちらも50点以上なら合格

という条件は、次のように表せます。

=IF(AND(A2+B2>=120,A2>=50,B2>=50),"合格","不合格")

ANDはすべての条件を満たす必要がある場合、ORはいずれか一つでも満たせばよい場合に使います。

ド・モルガンの法則

論理式では、NOTとAND・ORを変形できます。代表的な関係がド・モルガンの法則です。

NOT(A AND B)
= (NOT A) OR (NOT B)

また、

NOT(A OR B)
= (NOT A) AND (NOT B)

も成り立ちます。

例えば、NOT(A AND B)は、「AとBがともに1の場合だけ0」です。一方、(NOT A) OR (NOT B)も、AとBがともに1の場合だけ0になるので、二つの式の真理値表は一致します。

XORをAND・OR・NOTで表す

XORは「どちらか一方だけが1」です。

したがって、「少なくとも一方が1」であり、なおかつ「両方が1ではない」と考えると、

(A OR B) AND NOT(A AND B)

と表せます。

別の表し方として、

(A AND NOT B) OR (NOT A AND B)

も同じ結果になります。

EXAMPLE

例題

論理演算 · EXAMPLEオリジナル

4ビットの2進数1010と0110の各ビットについてXOR演算を行った結果を次から選べ。

  1. 0

    1100

  2. 1

    0010

  3. 2

    1110

  4. 3

    0110

解答・解説を確認

正解0.1100

解説

XORは対応するビットが異なるときだけ1になります。同じ値を2回XORすると元に戻る性質があり、ビットの反転にも利用できます。

出典
オリジナル

PRACTICE

論理演算の問題に挑戦