python3での、bit演算について紹介します。
ここでは、正の整数についてのみ考えます。
まずはじめに、以下の表で論理演算について確認します。
x | y | (1) 論理積(AND) x AND y | (2) 論理和(OR) x OR y | (3) 排他的論理和(XOR) x XOR y |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 1 |
0 | 0 | 0 | 0 | 0 |
それでは、個別にpython3での実装例を見ていきます。
(1) 論理積(AND)
x = 10 と y = 12 の論理積 (x AND y) を考えます。
この場合は、x & y と記述すれば良いです。
注意点としては、以降の演算でも同じですが、結果は10進数として返されます。よって2進数での表記が必要であれば bin( x & y )のように記述する必要があります。また、x および y についても10進数で与えていることに注意して下さい。
x = 10
print(bin(x))
#--> 0b1010
y = 12
print(bin(y))
#--> 0b1100
print(x & y)
#--> 8
print(bin(x & y))
#--> 0b1000
(2) 論理和(OR)
続いて、x = 10 と y = 12 の論理和 (x OR y) を考えます。
この場合は、x | y と記述すれば良いです。
x = 10
y = 12
print(x | y)
#--> 14
print(bin(x & y))
#--> 0b1110
(3) 排他的論理和(XOR)
さらに続いて、x = 10 と y = 12 の排他的論理和 (x XOR y) を考えます。
この場合は、x ^ y と記述すれば良いです。
x = 10
y = 12
print(x ^ y)
#--> 6
print(bin(x ^ y))
#--> 0b110
上の例では、2進数表記の場合、最も上の桁の 0 が省略されたことに、注意して下さい。