Pythonでビット演算子の論理積に触れるの記事の続き。

今見ようとしているSPI通信のコードに排他的論理和はないけれども、これから必要になるかもしれないし、一応触れておく。


排他的論理和 XOR は ^ の演算子を用いる。

X は Exclusive の意味を持つ。


XOR は x と y の二つの値があった時に

xyxor
110
101
011
000

片方の値が 1 で、もう一方が 0 の場合に 1 になる。

排他的論理和 - Wikipedia




早速計算を試してみよう。

x = 13 # 0b1101
y = 10  # 0b1010
t = x ^ y
print(t)
print(bin(t))

の場合、結果は7 (0b111)になる。


# 1101 ^ 1010
	1101
xor	1010
--------------
	0111

上下で 0 と 1 の対になっている箇所を 1 にすると、先頭(24)の行のみ 0 となる。


ちなみにCPUの説明等でよく見られる排他的論理和は

symbol_xor

のように描かれる