2 つの入力が異なるときだけ 1 になる論理演算。同じ値なら 0。半加算器・暗号・パリティチェックの基本部品です。
XOR 演算(排他的論理和 / Exclusive OR)は、2 つの入力ビットが異なるときだけ 1、同じときは 0 になる論理演算です。OR と似ていますが、「両方 1」の場合だけ違います(OR は 1、XOR は 0)。
日常の例で言えば「どちらか一方だけが成り立つ」。レストランで「コーヒーか紅茶を選んでください、両方は不可」のような排他的選択を表すイメージです。
真理値表を見ると、XOR の独特な性質がよく分かります。OR とそっくりですが「両方 1 のとき」だけ違って 0 になるのが特徴です。
・0 XOR 0 = 0:同じ → 0
・0 XOR 1 = 1:違う → 1
・1 XOR 0 = 1:違う → 1
・1 XOR 1 = 0:同じ → 0(OR との違い)
覚え方は「違うときだけ 1」または「排他的 OR(どちらか一方)」。日常では「コーヒーか紅茶を選んでください(両方は不可)」のような排他的な選択を表します。MIL 記号は OR の盾型の前にもう 1 本曲線がついた形で、OR と区別できます。
XOR は実用上とても応用範囲が広く、特に「2 回掛けると元に戻る(可逆性)」という性質が様々な場面で活用されます。
・簡易暗号(ストリーム暗号):データと鍵を XOR すると暗号化、同じ鍵でもう一度 XOR すれば復号される。暗号化と復号が同じ操作で済む
・パリティチェック:ビット列全体を XOR すると、1 が奇数個なら 1、偶数個なら 0。データの破損検出に使う基本テクニック
・半加算器(Half Adder):2 進数の足し算で「桁上げを除いた和」は XOR、桁上げは AND で求める。CPU の加算回路の最も基本的な部品
・ビット反転(部分反転):「反転したい桁だけ 1」のマスクと XOR を取ると、その桁だけ反転する
・RAID 5 のパリティ:複数ディスクの内容を XOR して保管し、1 台壊れてもデータを復元できる仕組み
・XOR スワップ:a^=b; b^=a; a^=b; で中間変数なしに a と b を入れ替える古典テクニック
プログラミング言語では ^(ハット記号、または「キャレット」)が XOR 演算子。「同じ値同士の XOR は 0」と「2 回 XOR で元に戻る」の 2 点を覚えておくと、こうした応用を理解しやすくなります。