エックス‐オア【XOR】
読み方:えっくすおあ
《exclusive OR》論理演算の一で排他的論理和。または、コンピューターでXOR回路。
排他的論理和
(xor から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/09/04 07:36 UTC 版)


例
「私の身長は160cm以上である」と「私の体重は52kg未満である」の二つの命題の排他的論理和は、これらのうち一方のみが成り立つことであるから、「私は身長160cm以上であり体重が52kg以上である。あるいは、私は身長160cm未満であり体重が52kg未満である。」となる。
なお、2つの命題 A, B について共通部分 A ∧ B が空集合であれば、排他的論理和は論理和と同じになる。例えば A = 「私の身長は160cmである」と B = 「私の身長は170cmである」は同時に成立することはない(共通部分が空である)ので、(A xor B) は (A ∨ B) と同じく「私の身長は160cmまたは170cmのいずれか一方である」となる。
性質
XOR
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/30 05:01 UTC 版)
ビット単位XORは、ふたつの同じ長さのビットパターンを入力とし、同じ位置のビット毎に論理的XORを行って同じ長さのビットパターンを出力する操作である。各ビット位置で、入力するふたつのビットが違う値であれば、出力ビットは1となる。 0101XOR 0011 = 0110 C/C++では、ビット単位XOR演算子は "^" (サーカムフレックス)で表される。 x = y ^ z; この例では、"y XOR z" の結果を x に格納する。 アセンブリ言語プログラマはレジスタの内容をゼロにしたいときに XOR 操作を行う。多くのアーキテクチャでは、ゼロという値をロードしてレジスタに格納するよりもXORを行う方がCPUクロックサイクルを消費せず、また命令長も短いためメモリを節約できる。同じ値をビット単位XORのふたつの入力として使うと、出力は常にゼロになる。つまり、同じレジスタを指定したXOR命令を実行して同じレジスタに戻すことでその内容をゼロにすることができる。もちろん、MIPSアーキテクチャの場合は入力としてゼロレジスタを使えば、ORでも XORでもANDでもADDでも結果をゼロにすることができる。 ビット単位XORはフラグの値を変更するときにも使われる。 0010 このビットパターンで1番目のビットと3番目のビットを同時に変更したい場合、もうひとつのビットパターンで、その変えたい位置に1を置いておく。 0010XOR 1010 = 1000 このテクニックはビットパターンをブーリアン変数の並びとして扱うときに使われるだろう。
※この「XOR」の解説は、「ビット演算」の解説の一部です。
「XOR」を含む「ビット演算」の記事については、「ビット演算」の概要を参照ください。
- xorのページへのリンク