逻辑运算(and\or\not)
# 0 是 False
print(0 and 2) # 0:有0返回0
print(3 and 2) # 2:无0返回后
print(0 or 2) # 2:有0不返0(两个都是0,只能返回0)
print(3 or 2) # 无0返回前
print(not 0) # True
print(not 2) # False
位运算
# & 与 两个位都为1时,结果才为1
# | 或 两个位都为0时,结果才为0
# ^ 异或 两个位相同为0,相异为1
# ~ 取反 0变1,1变0
# << 左移 各二进位全部左移若干位,高位丢弃,低位补0
# >> 右移 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0
print(2 & 3) # 2
print(2 | 3) # 3
print(2 ^ 3) # 1
print(3 << 2) # 12,相当于3 * 2 ** 2
# 0 0000
# 1 0001
# 2 0010
# 3 0011