「XOR 」は論理 ろんり 演算 えんざん について説明 せつめい しているこの項目 こうもく へ転送 てんそう されています。論理 ろんり 回路 かいろ については「XORゲート 」をご覧 らん ください。
ベン図 べんず による排他 はいた 的 てき 論理 ろんり 和 わ
P
⊻
Q
{\displaystyle P\veebar Q}
排他 はいた 的 てき 論理 ろんり 和 わ (はいたてきろんりわ、英 えい : exclusive or / exclusive disjunction )とは、ブール論理 ろんり や古典 こてん 論理 ろんり 、ビット演算 えんざん などにおいて、2つの入力 にゅうりょく のどちらか片方 かたがた が真 しん でもう片方 かたがた が偽 にせ の時 とき には結果 けっか が真 しん となり、両方 りょうほう とも真 しん あるいは両方 りょうほう とも偽 にせ の時 とき は偽 にせ となる演算 えんざん (論理 ろんり 演算 えんざん )である。XOR 、EOR 、EX-OR (エクスオア、エックスオア、エクソア)などと略称 りゃくしょう される。
中置 ちゅうち 演算 えんざん 子 こ のある体系 たいけい では、中置 ちゅうち 演算 えんざん 子 こ を利用 りよう した中置 ちゅうち 記法 きほう により表記 ひょうき されることが多 おお い。演算 えんざん 子 こ は
⊻
{\displaystyle \veebar }
(Unicode : U+22BB ⊻)、
∨
˙
{\displaystyle {\dot {\vee }}}
。誤解 ごかい のおそれがないときは、XOR、xor、
⊕
{\displaystyle \oplus }
(Unicode: U+2295 ⊕)、+ 、≠ なども使 つか われる。
論理 ろんり 学 がく などでは
⊻
{\displaystyle \veebar }
を使用 しよう して
P
⊻
Q
{\displaystyle P\veebar Q}
と書 か くことが多 おお く、論理 ろんり 回路 かいろ などでは
⊕
{\displaystyle \oplus }
を使用 しよう して
A
⊕
B
{\displaystyle A\oplus B}
と書 か くことが多 おお い。
記号 きごう を使 つか った中置 ちゅうち 演算 えんざん 子 こ としては ^
や @
などが使 つか われることが多 おお く、キーワードが演算 えんざん 子 こ になるような言語 げんご では XOR
や xor
などが使 つか われることが多 おお い。
z = x ^ y;
z = x xor y;
「私 わたし の身長 しんちょう は160cm以上 いじょう である」と「私 わたし の体重 たいじゅう は52kg未満 みまん である」の二 ふた つの命題 めいだい の排他 はいた 的 てき 論理 ろんり 和 わ は、これらのうち一方 いっぽう のみが成 な り立 た つことであるから、「私 わたし は身長 しんちょう 160cm以上 いじょう であり体重 たいじゅう が52kg以上 いじょう である。あるいは、私 わたし は身長 しんちょう 160cm未満 みまん であり体重 たいじゅう が52kg未満 みまん である。」となる。
なお、2つの命題 めいだい A , B について共通 きょうつう 部分 ぶぶん A ∧ B が空 そら 集合 しゅうごう であれば、排他 はいた 的 てき 論理 ろんり 和 わ は論理 ろんり 和 わ と同 おな じになる。例 たと えば A = 「私 わたし の身長 しんちょう は160cmである」と B = 「私 わたし の身長 しんちょう は170cmである」は同時 どうじ に成立 せいりつ することはない(共通 きょうつう 部分 ぶぶん が空 そら である)ので、(A xor B ) は (A ∨ B ) と同 おな じく「私 わたし の身長 しんちょう は160cmまたは170cmのいずれか一方 いっぽう である」となる。
排他 はいた 的 てき 論理 ろんり 和 わ は、論理 ろんり 和 わ 、論理 ろんり 積 せき 、否定 ひてい を用 もち いて、
P
⊻
Q
=
(
P
∧
¬
Q
)
∨
(
¬
P
∧
Q
)
{\displaystyle P\veebar Q=(P\land \lnot Q)\lor (\lnot P\land Q)}
P
⊻
Q
=
(
P
∨
Q
)
∧
(
¬
P
∨
¬
Q
)
{\displaystyle P\veebar Q=(P\lor Q)\land (\lnot P\lor \lnot Q)}
P
⊻
Q
=
(
P
∨
Q
)
∧
¬
(
P
∧
Q
)
{\displaystyle P\veebar Q=(P\lor Q)\land \lnot (P\land Q)}
などと表 あらわ すことができる。
真理 しんり 値 ち 表 ひょう
命題 めいだい P
命題 めいだい Q
P ⊻ Q
真 しん
真 しん
偽 にせ
真 しん
偽 にせ
真 しん
偽 にせ
真 しん
真 しん
偽 にせ
偽 にせ
偽 にせ
2を法 ほう とする剰余 じょうよ 体 たい
Z
/
2
Z
{\displaystyle \mathbb {Z} /2\mathbb {Z} }
での加算 かさん (この体 からだ では加算 かさん と減算 げんざん は等 ひと しい)は、0 を偽 にせ 、1 を真 しん とみなすと、排他 はいた 的 てき 論理 ろんり 和 わ となる。つまり、偶数 ぐうすう (0, 偽 にせ ) どうしまたは奇数 きすう (1, 真 しん ) どうしを加 くわ えると偶数 ぐうすう (0, 偽 にせ ) になり、偶数 ぐうすう (0, 偽 にせ ) と奇数 きすう (1, 真 しん ) を加 くわ えると奇数 きすう (1, 真 しん ) になる。
2進数 しんすう 表現 ひょうげん した数値 すうち の各 かく ビット に対 たい し、0 を偽 にせ 、1 を真 しん とみなして排他 はいた 的 てき 論理 ろんり 和 わ を求 もと めた結果 けっか を、ビットごとの排他 はいた 的 てき 論理 ろんり 和 わ 、排他 はいた 的 てき ビット和 わ 、または単 たん に排他 はいた 的 てき 論理 ろんり 和 わ と呼 よ ぶ。
P = 0011
K = 0110
P ⊕ K = 0101
ビットごとの排他 はいた 的 てき 論理 ろんり 和 わ は、桁 けた 上 あ がり を無視 むし した2進数 しんすう の加算 かさん の結果 けっか と等 ひと しい。つまり、ビットごとの排他 はいた 的 てき 論理 ろんり 和 わ は、2 の冪 べき を位 い 数 すう とする有限 ゆうげん 体 たい
G
F
(
2
n
)
{\displaystyle \mathrm {GF} (2^{n})}
での加減算 かげんざん (この体 からだ では加算 かさん と減算 げんざん は等 ひと しい)に等 ひと しい。(なお、2を法 ほう とする剰余 じょうよ 体 たい
Z
/
[
2
]
{\displaystyle \mathbb {Z} /[2]}
は、位 くらい 数 すう 2の有限 ゆうげん 体 たい
G
F
(
2
)
{\displaystyle \mathrm {GF} (2)}
である。)
1 桁 けた の2進数 しんすう の排他 はいた 的 てき 論理 ろんり 和 わ は、半 はん 加算 かさん 器 き の一部 いちぶ である。
排他 はいた 的 てき 論理 ろんり 和 わ とビットごとの排他 はいた 的 てき 論理 ろんり 和 わ とは、異 こと なることがある。0(偽 にせ )と 1(真 しん )については、排他 はいた 的 てき 論理 ろんり 和 わ とビットごとの排他 はいた 的 てき 論理 ろんり 和 わ は等 ひと しい。しかし、0 でない値 ね が全 すべ て真 しん とみなされる環境 かんきょう や、0 でない値 ね が真 しん (1) に暗黙 あんもく の型 かた 変換 へんかん される環境 かんきょう では、0 と 1 以外 いがい の値 ね に対 たい しても(ビットごとでない)排他 はいた 的 てき 論理 ろんり 和 わ を求 もと めることができ、結果 けっか は一般 いっぱん にはビットごとの排他 はいた 的 てき 論理 ろんり 和 わ とは異 こと なるので注意 ちゅうい が必要 ひつよう である。
ビットごとの排他 はいた 的 てき 論理 ろんり 和 わ は、コンピュータ上 じょう でビット演算 えんざん を行 おこな っている場合 ばあい に、特定 とくてい のビットだけを反転 はんてん させるのによく用 もち いられる。ある数値 すうち と、その数値 すうち のビットを反転 はんてん させたい部分 ぶぶん を 1 にした数値 すうち との排他 はいた 的 てき 論理 ろんり 和 わ をとると、指定 してい した部分 ぶぶん が反転 はんてん した数値 すうち が得 え られる:
0011
(
2
)
⊕
0110
(
2
)
=
0101
(
2
)
{\displaystyle 0011_{(2)}\oplus 0110_{(2)}=0101_{(2)}}
多 おお くのプロセッサ で、レジスタをゼロにする場合 ばあい に、直接 ちょくせつ ゼロをレジスタへ転送 てんそう するより、自分 じぶん 自身 じしん とのXORをとってゼロとするほうが有利 ゆうり な場合 ばあい がある。
X
⊕
X
=
0
{\displaystyle X\oplus X=0}
主 おも に以下 いか の条件 じょうけん が成立 せいりつ する場合 ばあい 、言語 げんご 処理 しょり 系 けい が最適 さいてき 化 か の一環 いっかん としてXORを用 もち いる。
即値 そくち のゼロを省略 しょうりゃく することにより、コードサイズが削減 さくげん できる。
処理 しょり がレジスタとALU のみで完結 かんけつ するので、サイクル数 すう や消費 しょうひ 電力 でんりょく が削減 さくげん できる。
XOR演算 えんざん によるフラグ 変化 へんか がその後 ご の処理 しょり に不利 ふり な影響 えいきょう を残 のこ さない。
ビットごとの排他 はいた 的 てき 論理 ろんり 和 わ によって、多数 たすう の入力 にゅうりょく における偽 にせ の個数 こすう の奇数 きすう ・偶数 ぐうすう (パリティ )が検出 けんしゅつ できるので、誤 あやま り検出 けんしゅつ に用 もち いられる。この目的 もくてき で排他 はいた 的 てき 論理 ろんり 和 わ (論理 ろんり ゲート )を樹 き 枝 えだ 状 じょう に接続 せつぞく した回路 かいろ をパリティツリーという。
ビットごとの排他 はいた 的 てき 論理 ろんり 和 わ は特定 とくてい ビットの反転 はんてん 操作 そうさ なので、2回 かい 繰 く り返 かえ せば元 もと に戻 もど る。つまり
(
P
⊕
K
)
⊕
K
=
P
{\displaystyle (P\oplus K)\oplus K=P}
これは、結合 けつごう 法則 ほうそく によって、次 つぎ のとおりに証明 しょうめい できる。
(
P
⊕
K
)
⊕
K
=
P
⊕
(
K
⊕
K
)
=
P
{\displaystyle (P\oplus K)\oplus K=P\oplus (K\oplus K)=P}
この性質 せいしつ は便利 べんり であって、さまざまな応用 おうよう がある。単純 たんじゅん なものでは、(現代 げんだい では有用 ゆうよう 性 せい はほとんどないが)2個 こ のレジスタの内容 ないよう を他 た の資源 しげん を使 つか わず交換 こうかん できる「XOR交換 こうかん アルゴリズム 」があり、データ構造 こうぞう では「XOR連結 れんけつ リスト 」がある。
K
{\displaystyle K}
を鍵 かぎ とする暗号 あんごう に使 つか うこともできる。平文 へいぶん を
P
{\displaystyle P}
とすると、
P
⊕
K
{\displaystyle P\oplus K}
を暗号 あんごう 文 ぶん とすることができる。
先 さき の例 れい でいえば、平文 へいぶん
0011
(
2
)
{\displaystyle 0011_{(2)}}
が鍵 かぎ
0110
(
2
)
{\displaystyle 0110_{(2)}}
を使 つか って暗号 あんごう 文 ぶん
0101
(
2
)
{\displaystyle 0101_{(2)}}
に変換 へんかん され、次 つぎ のとおり同一 どういつ の鍵 かぎ を使 つか って暗号 あんごう 文 ぶん から平文 へいぶん に復号 ふくごう できる。
0101
(
2
)
⊕
0110
(
2
)
=
0011
(
2
)
{\displaystyle 0101_{(2)}\oplus 0110_{(2)}=0011_{(2)}}
バーナム暗号 あんごう は、この性質 せいしつ を利用 りよう した暗号 あんごう である。一般 いっぱん に鍵 かぎ 交換 こうかん 問題 もんだい があることから、短 みじか い鍵 かぎ を元 もと にした何 なん らかの数列 すうれつ を使 つか うことも多 おお いが、ワンタイムパッド によるバーナム暗号 あんごう には原文 げんぶん と同 おな じ長 なが さの鍵 かぎ (そのような大量 たいりょう の情報 じょうほう 量 りょう をもつものは、もはや運用 うんよう 上 じょう は「鍵 かぎ 」とはいえないが)が必要 ひつよう である。解読 かいどく が絶対 ぜったい に不可能 ふかのう (理論 りろん 的 てき に、どのような解読 かいどく 結果 けっか も同様 どうよう に確 たし からしいものになってしまう)という意味 いみ では最強 さいきょう の暗号 あんごう であるが、暗号 あんごう の利用 りよう は運用 うんよう の面 めん も含 ふく めて総合 そうごう 的 てき に判断 はんだん しなければならないものであり、鍵 かぎ の事前 じぜん 共有 きょうゆう とその秘匿 ひとく に必要 ひつよう な多大 ただい なコストが大 おお きな難点 なんてん である。
排他 はいた 的 てき 論理 ろんり 和 わ と2進数 しんすう 表記 ひょうき を用 もち いて、三 みっ つ山崩 やまくずれ し(ニム )の必勝 ひっしょう 法 ほう を導 みちび くことができる。