「排他的論理和」という言葉はデジタル回路・プログラミング・暗号理論の学習で登場する重要な概念のひとつです。
XORとの関係や真理値表・ベン図による理解がわかりにくいと感じる方も多いかもしれません。
本記事では、排他的論理和の意味と記号・論理式を、XOR・ベン図・真理値表・論理演算・定義を交えてわかりやすく解説します。
デジタル回路や論理演算を学んでいる方や基本情報技術者試験に取り組んでいる方にもきっと役立つ内容でしょう。
排他的論理和を正しく理解することで、デジタル回路設計・プログラミング・暗号技術への理解が大きく深まります。
排他的論理和とは「2つの入力が異なるときに1(真)になる論理演算」のこと
それではまず、排他的論理和の基本的な意味と定義について解説していきます。
排他的論理和(はいたてきろんりわ)とは、2つの入力値が「異なる場合に1(真)、同じ場合に0(偽)」を出力する論理演算のことです。
英語では「XOR(Exclusive OR:エクスクルーシブOR)」と表記され、「排他的OR」とも呼ばれます。
「排他的」という言葉は「どちらか一方だけが真の場合のみ成立する」という意味で、両方が真(1)の場合は偽(0)になる点が通常の論理和(OR)との大きな違いでしょう。
デジタル回路の加算器・パリティチェック・暗号化・プログラミングのビット操作など幅広い分野で活用される重要な論理演算です。
排他的論理和(XOR)の最も直感的な理解は「2つの入力が同じなら0・違うなら1」です。「1+1=0(桁上がりなしの加算)」として機能する点が加算器回路での活用につながっています。
排他的論理和の記号と論理式
排他的論理和を表すために使われる記号と論理式を整理しておきましょう。
| 表現方法 | 記号・式 |
|---|---|
| 論理記号 | ⊕(丸の中にプラス) |
| プログラミング(C・Java・Python) | ^(キャレット) |
| 論理式 | A XOR B = (A AND NOT B) OR (NOT A AND B) |
| 簡略表記 | A ⊕ B |
| 回路記号 | OR記号に弧を加えたゲート記号 |
プログラミングではA ^ Bという記法で排他的論理和の演算を行うでしょう。
排他的論理和の真理値表
排他的論理和の動作を真理値表で確認してみましょう。
| 入力A | 入力B | 出力A⊕B | 説明 |
|---|---|---|---|
| 0 | 0 | 0 | 同じ(どちらも0)→ 0 |
| 0 | 1 | 1 | 異なる → 1 |
| 1 | 0 | 1 | 異なる → 1 |
| 1 | 1 | 0 | 同じ(どちらも1)→ 0 |
「入力が同じ→0・入力が異なる→1」というシンプルなルールを覚えることで真理値表を導き出せるでしょう。
排他的論理和と論理和・論理積の違い
続いては、排他的論理和と論理和(OR)・論理積(AND)との違いを確認していきます。
3つの論理演算の違いを整理することで、論理演算全体の理解が深まるでしょう。
論理和(OR)・論理積(AND)・排他的論理和(XOR)の比較
| 入力A | 入力B | OR(論理和) | AND(論理積) | XOR(排他的論理和) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 | 0 |
XORとORの違いは「両方が1の場合」の出力で、ORは1を出力するがXORは0を出力する点がポイントでしょう。
ベン図による排他的論理和の理解
ベン図を使うと排他的論理和の意味を視覚的に理解できます。
2つの集合AとBのベン図で考えると、排他的論理和はAとBの「重なっていない部分のみ」を示します。
論理和(OR)が「AまたはBに属する部分すべて(重なりを含む)」を示すのに対し、排他的論理和(XOR)は「AかBどちらか一方にのみ属する部分(重なりを除く)」を示すでしょう。
XORの重要な性質
【排他的論理和(XOR)の重要な性質】
① 自己逆元性:A ⊕ A = 0(同じ値とXORすると0になる)
② 単位元:A ⊕ 0 = A(0とXORすると元の値になる)
③ 可換性:A ⊕ B = B ⊕ A
④ 結合性:(A ⊕ B) ⊕ C = A ⊕ (B ⊕ C)
⑤ 暗号化と復号:(A ⊕ K) ⊕ K = A(同じキーで2回XORすると元に戻る)
特に「同じ値で2回XORすると元に戻る」という性質が暗号化・復号への応用につながっているでしょう。
排他的論理和の主な活用場面
続いては、排他的論理和が実際にどのような場面で活用されているかを確認していきます。
具体的な活用例を知ることでXORの重要性が実感できるでしょう。
デジタル回路での活用(加算器)
XORは半加算器(Half Adder)の基本構成部品として使われます。
2進数の加算では「1+1=10(桁上がりあり)」となりますが、XORゲートで「1⊕1=0(下位ビット)」・ANDゲートで「1AND1=1(桁上がりビット)」を算出することで加算回路を実現できるでしょう。
暗号化でのXOR活用
XORの「同じ鍵で2回演算すると元に戻る」という性質は暗号化に応用されます。
【XORを使った簡単な暗号化の例】
平文:01001000(’H’のASCIIコード)
鍵: 11001010
暗号文:平文 ⊕ 鍵 = 10000010
復号:暗号文 ⊕ 鍵 = 10000010 ⊕ 11001010 = 01001000(元の平文に戻る)
ワンタイムパッド暗号・AES・SHA系のハッシュ関数など現代の暗号技術でもXOR演算が重要な役割を果たしているでしょう。
プログラミングでのXOR活用例
プログラミングでもXORは様々な場面で活用されます。
【Pythonでのビット演算XORの例】
a = 5 # 0101
b = 3 # 0011
print(a ^ b) # 0110 = 6
【XORを使った変数の値の交換(一時変数なし)】
a = a ^ b
b = a ^ b
a = a ^ b
【配列の中で1つだけ重複しない数を見つける(XORの応用)】
nums = [2, 3, 2, 4, 4]
result = 0
for n in nums:
result ^= n
print(result) # 3(2回出現する数がXORで消える)
XORを使った「一時変数なしの値交換」や「重複しない要素の検出」はアルゴリズムの面接問題でも頻出のテクニックでしょう。
まとめ
本記事では、排他的論理和の意味と記号・論理式について、XOR・ベン図・真理値表・活用場面を交えながら解説しました。
排他的論理和(XOR)とは2つの入力が異なる場合に1・同じ場合に0を出力する論理演算で、⊕またはプログラミングでは^記号で表されます。
「同じ値で2回XORすると元に戻る」という自己逆元性がデジタル回路の加算器・暗号化・ハッシュ関数など多様な分野での活用基盤となっているでしょう。
真理値表・ベン図・XORの性質(可換性・結合性・自己逆元性)を理解することで、デジタル回路設計とプログラミングへの応用が広がります。
本記事が排他的論理和への理解を深め、デジタル回路学習やプログラミングの実践に役立てば幸いです。