4ビットの2進数1010と0110の各ビットについてXOR演算を行った結果を次から選べ。
- 0
1100
- 1
0010
- 2
1110
- 3
0110
解答・解説を確認
正解0.1100
解説
XORは対応するビットが異なるときだけ1になります。同じ値を2回XORすると元に戻る性質があり、ビットの反転にも利用できます。
- 出典
- オリジナル
TERM GUIDE · DIGITAL
論理演算とは、真・偽や0・1を組み合わせて、新しい真・偽や0・1を求める演算です。
コンピュータでは、条件が成り立つことを1、成り立たないことを0として扱うことが多くあります。また、2進数の各ビットも0または1なので、論理演算をビットごとに行うことができます。
代表的な論理演算には、AND、OR、NOT、XORがあります。
ANDは、両方が1のときだけ1になる演算です。
| A | B | A AND B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
条件を表す場合には「かつ」に対応します。
例えば、
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は、少なくとも一方が1なら1になる演算です。
| A | B | A OR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
条件を表す場合には「または」に対応します。
例えば、
7月または8月
→ 月=7 OR 月=8
という条件を表せます。
ただし、日常的な「または」とは異なり、両方という場合も含まれます。例えば、「食後に、コーヒーまたは紅茶が付きます」という条件を論理的に考えると、「両方ください」という場合も排除されません。
NOTは、0と1を反転する演算です。
| A | NOT A |
|---|---|
| 0 | 1 |
| 1 | 0 |
例えば、4ビットの
1110
を反転(NOT)すると、
0001
となります。
XORは、二つの入力が異なるときだけ1になる演算です。EORと表記されることもあります。
| A | B | A XOR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
例えば、
1010
XOR 0110
--------
1100
となります。
AND、OR、XORは混同しやすいですが、次のように考えると区別しやすくなります。
| 演算 | 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は「どちらか一方だけが1」です。
したがって、「少なくとも一方が1」であり、なおかつ「両方が1ではない」と考えると、
(A OR B) AND NOT(A AND B)
と表せます。
別の表し方として、
(A AND NOT B) OR (NOT A AND B)
も同じ結果になります。
EXAMPLE
1100
0010
1110
0110
正解0.1100
XORは対応するビットが異なるときだけ1になります。同じ値を2回XORすると元に戻る性質があり、ビットの反転にも利用できます。
PRACTICE