Python での XOR 排他的論理和
Muhammad Waiz Khan
2023年1月30日
このチュートリアルでは、Python で 2つの変数に対して XOR(排他的論理和)演算を行う複数の方法を説明します。XOR 演算は通常、エラーチェックや 2つの条件を同時に真にしたくない場合など、異なるプロトコルで使用されます。
Python で ^
演算子を使って XOR を取得する
Python の ^
演算子はビット単位での XOR のためのもので、ブーリアンに対しても使用することができます。以下のコード例は、ブール値に対する XOR 演算と整数に対するビット単位の XOR 演算をどのように行うかを示しています。
Python の XOR 演算の例 1:
a = bool(1)
b = bool(0)
print(a ^ b)
出力:
True
Python XOR 演算例 2:
a = 3
b = 5
print(a ^ b)
出力:
6
2 進数の 3
は 0b11
で、5
は 0b101
なので、0b011
と 0b101
の XOR は 0b110
となり、10 進数では 6
となります。
Python で論理演算子を使用して XOR を取得する
Python の論理演算子を用いてユーザ定義の xor()
メソッドを実装することができます。以下のコード例は、Python の and
、or
、not
演算子を用いて、ブーリアンに対して xor()
メソッドを実装する方法を示しています。
コード例:
def xor(x, y):
return bool((x and not y) or (not x and y))
print(xor(0, 0))
print(xor(0, 1))
print(xor(1, 0))
print(xor(1, 1))
出力:
False
True
True
False
組み込みの xor()
メソッドを使って Python で XOR を取得する
Python の operator
モジュールの xor()
メソッドは、ブーリアンや整数の XOR を取得するためにも利用できます。Python の xor()
メソッドの機能は ^
演算子と同じです。また、整数に対してはビット単位の XOR 演算を、ブーリアンに対しては XOR 演算を行います。以下の例では、xor()
メソッドを用いて大論理和と整数に対して XOR を適用する方法を説明します。
from operator import xor
print(xor(bool(0), bool(0)))
print(xor(5, 3))
出力:
False
6