Pythonでビット演算子の論理積に触れるの記事の続き。
今見ようとしているSPI通信のコードに排他的論理和はないけれども、これから必要になるかもしれないし、一応触れておく。
排他的論理和 XOR は ^ の演算子を用いる。
X は Exclusive の意味を持つ。
XOR は x と y の二つの値があった時に
x | y | xor |
---|---|---|
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
片方の値が 1 で、もう一方が 0 の場合に 1 になる。
早速計算を試してみよう。
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の説明等でよく見られる排他的論理和は
のように描かれる