Python での XOR 排他的論理和

Muhammad Waiz Khan 2023年1月30日
  1. Python で ^ 演算子を使って XOR を取得する
  2. Python で論理演算子を使用して XOR を取得する
  3. 組み込みの xor() メソッドを使って Python で XOR を取得する
Python での XOR 排他的論理和

このチュートリアルでは、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 進数の 30b11 で、50b101 なので、0b0110b101 の XOR は 0b110 となり、10 進数では 6 となります。

Python で論理演算子を使用して XOR を取得する

Python の論理演算子を用いてユーザ定義の xor() メソッドを実装することができます。以下のコード例は、Python の andornot 演算子を用いて、ブーリアンに対して 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

関連記事 - Python Operator