【えっくすおーある】

XOR とは?

💡 ビットの「違いを検出する」演算、暗号化から誤り訂正まで幅広く使われる
📌 このページのポイント
XOR — 排他的論理和 真理値表 A B A XOR B 0 0 0 0 1 1 1 0 1 1 1 0 ベン図イメージ A B 重なり = 0(偽) 「どちらか一方だけが真」のときに真(1)になる 暗号化・誤り検出・ビット演算で広く活用
XORのイメージ
ひよこ ひよこ

XORって何をする演算なの?

ペンギン先生 ペンギン先生

2ビットの「違い」を検出する演算だよ。0 XOR 0=0、0 XOR 1=1、1 XOR 0=1、1 XOR 1=0。「両方同じなら0、違うなら1」というシンプルなルール。

ひよこ ひよこ

暗号化にどう使うの?

ペンギン先生 ペンギン先生

「データ XOR キー = 暗号文」、「暗号文 XOR キー = 元のデータ」という特性を使う。同じ値でXORすると元に戻るから、キーさえわかれば暗号を解読できる。現代の暗号アルゴリズムAESなど)の内部でもXORが多用されている。

ひよこ ひよこ

RAIDにも使うって聞いたけど?

ペンギン先生 ペンギン先生

RAID5ではディスク3台でデータをA・B・(A XOR B)と分散保存する。1台が壊れても「残りの2台でXOR計算」すれば失われたデータを復元できる。XORの「元に戻せる」特性を活用した実用例だよ。

ひよこ ひよこ

XORって機械学習でも出てくるの?

ペンギン先生 ペンギン先生

出てくるよ。「XOR問題」はニューラルネットワークの歴史で重要な転換点だったんだ。1969年にMarvin Minskyが「単層パーセプトロンではXOR演算を学習できない」と証明して、AI研究の冬の時代が始まった。後に多層パーセプトロン隠れ層を追加)でXOR問題が解けることが示されて、ニューラルネットの復活につながったんだよ。

ひよこ ひよこ

日常的なプログラミングでXORを使う場面ってある?

ペンギン先生 ペンギン先生

一つ有名なテクニックがあるよ。「配列の中で1つだけ重複していない要素を見つける」問題。全要素をXORすると、同じ値同士が打ち消し合って残るのが1つだけの要素になる。追加メモリなし・O(n)で解けるエレガントな解法として、コーディング面接でも頻出の問題だよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
XORって出てきたら「2つのビットが異なれば1、同じなら0の論理演算、暗号化やパリティ計算によく使う」と思えばOK!
📖 おまけ:英語の意味
「eXclusive OR」 = 排他的論理和
💬 「どちらか一方だけが1のとき1」という排他性から「排他的」論理和と呼ばれる。非排他的なORとの違いは「両方が1のとき0」になる点
← 用語集にもどる