読み方 : エックスオア

XOR 【eXclusive OR】 排他的論理和 / EOR / EX-OR

概要

XOR(eXclusive OR)とは、論理演算の一つで、二つの命題のいずれか一方のみが真のときに真となり、両方真や両方偽のときは偽となるもの。論理回路や2進数の数値の場合は、二つの入力のうち片方のみが1であるときのみ出力が1となり、両方1や両方0の場合は0となる。

解説 論理和OR演算)に似ているが、論理和では「いずれか一方が真」なら他方が何であれ結果は真となるが、排他的論理和では「いずれか一方のみが真」の場合に真となる。両者共に真の場合は真とならないことを「排他的」と表現している。

三入力以上の場合は、まず二つを選んでXORを取り、その結果と残りの一つを選んでXORを取り、という手順を繰り返すことで結果を得ることができる。入力における真の数が奇数個のときに出力が真に、偶数個のとき偽となる。

論理学では記号「⊻」を用いて「P⊻Q」のように表記し、電子工学(論理回路)では記号「⊕」を用いて「P⊕Q」のように表す。XOR演算を行う論理回路を「排他的論理和回路」「XOR回路」「XORゲート」などと呼ぶ。

多くのプログラミング言語でもビットごとのXOR演算を行う演算子が用意されており、キーワード「xor」を用いて「P xor Q」と書くものや、C言語に倣って「^」(ハットキャレット)記号を用いて「P^Q」と表記する言語が多い。

あるビットが「0」のとき、「1」とXORを取ると「1」になるが、元の値が「1」なら結果は「0」になる。すなわち、「1とXORを取る」という演算は「そのビットの値を反転する」という操作になる。これを利用して、反転したい位置を「1」にセットしたビット列を用いて、入力値の特定のビットのみを反転させるという操作がよく用いられる。

(2023.8.11更新)

論理演算

NOT 否定
入力01
出力10

AND 論理積
入力10011
入力20101
出力0001

OR 論理和
入力10011
入力20101
出力0111

XOR 排他的論理和
入力10011
入力20101
出力0110

NAND 否定論理積
入力10011
入力20101
出力1110

NOR 否定論理和
入力10011
入力20101
出力1000

XNOR 否定排他的論理和
入力10011
入力20101
出力1001

他の用語辞典による「XOR」の解説 (外部サイト)

資格試験などの「XOR」の出題履歴

▼ ITパスポート試験
平25春 問82】 排他的論理和を表す論理式はどれか。ここで、論理変数AとBに対する排他的論理和の真理値表は次のように表される。また、ANDは論理積、ORは論理和、NOTは否定を表す。
平22秋 問68】 任意の8ビットのデータXと、8ビットのデータ00001111をビットごとに排他的論理和をとった結果はどれか。ここで、各1ビットのデータAとデータBの排他的論理和をとった結果Cの値は次のように表される。

▼ 基本情報技術者試験
令5修1 問5】 8ビットのレジスタがある。このレジスタの各ビットの値を d0,d1,…,d7 とし,パリティビットの値をpとする。
令3修12 問1】 nビットの値L1,L2がある。次の操作によって得られる値L3は,L1とL2に対するどの論理演算の結果と同じか。
平30修1 問2】 次の論理演算が成立するときに,aに入るビット列はどれか。ここで,⊕は排他的論理和を表す。 1101⊕0001⊕[ a ]⊕1101=1111。
平28修1 問3】 8ビットのレジスタがある。このレジスタの各ビットの値を d0,d1,…,d7 とし,パリティビットの値をpとする。
平25修7 問2】 内部鍵との排他的論理和を4ビット単位で実行するユニットA,B,Cから構成される装置がある。この装置では,入力ビット列 1101 を与えると,出力ビット列 0100 が得られる。
平22修6 問2】 内部鍵との排他的論理和を4ビット単位で実行するユニットA,B,Cから構成される装置がある。この装置では,入力ビット列 1101 を与えると,出力ビット列 0100 が得られる。
平22修1 問4】 8ビットのレジスタがある。このレジスタの各ビットの値を d0,d1,…,d7 とし,パリティビットの値をpとする。