論理積は A と B の両方が 1 のときに 1 をとなる論理演算です.
Python で論理積を得るには &
演算子を使います.まずは,変数 a
と b
に値を代入します.
a = 0b01110101 # 117
b = 0b01001011 # 75
print(a, b)
117 75
a
の値を 2 進数で表示します.
bin(a)
'0b1110101'
b
の値を 2 進数で表示します.
bin(b)
'0b1001011'
論理積の結果を 2 進数で表示します.
bin(a & b)
'0b1000001'
次の方法では論理積の結果を 10 進数で表示します.
a & b
65
計算結果を見やすく表示してみます.
print(bin(a))
print(bin(b))
print('---------')
print(bin(a & b))
0b1110101 0b1001011 --------- 0b1000001
論理和は A または B が 1 のときに 1 をとなる論理演算です.
論理和を得るには |
演算子を使います.
a = 0b01110101 # 117
b = 0b01001011 # 75
bin(a | b)
'0b1111111'
計算結果を見やすく表示してみます.
print(bin(a))
print(bin(b))
print('---------')
print(bin(a | b))
0b1110101 0b1001011 --------- 0b1111111
排他的論理和は A と B の値が異なるときに 1 をとなる論理演算です.繰り上がりのない足し算とも考えられます.つまり,1 + 1 = 10 ですが,繰り上がりがないので 0 になります.
排他的論理和を得るには ^
演算子を使います.
a = 0b01110101 # 117
b = 0b01001011 # 75
bin(a ^ b)
'0b111110'
少し見やすくなるようにしてみましょう.計算の結果が 6 桁になってしまうので,若干見にくくなってしまいます.
print(bin(a))
print(bin(b))
print('---------')
print(bin(a ^ b)) # 6桁になるので注意
0b1110101 0b1001011 --------- 0b111110
次のようにすると桁が揃って見やすくなります.
print('{:#010b}'.format(a))
print('{:#010b}'.format(b))
print('----------')
print('{:#010b}'.format(a ^ b))
0b01110101 0b01001011 ---------- 0b00111110
あるいは f 文字列を使って桁が揃えることも可能です.
print(f'{a:#010b}')
print(f'{b:#010b}')
print('----------')
print(f'{a^b:#010b}')
0b01110101 0b01001011 ---------- 0b00111110