立即学习:https://edu.youkuaiyun.com/course/play/26099/322894?utm_source=blogtoedu
'''
位运算
&(与) |(或) ~(非) ^(异或) >>(右移) <<(左移)
'''
a = 2
b = 3
'''
0 为假 1为真
与:同时为真值为真 一个为假值为假
0000 0010
&
0000 0011
----------
000000010
'''
print(a & b) # 结果 2
'''
或:同时为假值为假 一个为真值为真
0000 0010
|
0000 0011
----------
0000 0011
'''
print(a | b) # 结果 3
'''
0000 0010
取反
1111 1101
转十进制:
步骤如下:
符号位为1 负数 减1
1111 1100
取反
0000 0011
转十进制
3
负数
-3
'''
print(~a) # 结果-3
'''
异或:相同为0 不同为1
0000 0010
^
0000 0011
----------
0000 0001
'''
print(a ^ b) # 结果1
'''
右移:变小
数值//2的右移位数次方
例如
56 >> 3 值为 56//2的3次方(56整除2的三次方)
'''
print(a >> 1) # 结果 1
'''
#临界值
0>>n位 仍然为0
-1 >> n位 仍然为-1
'''
print("0右移n位:" + str(0 >> 5000))
print("-1右移n位:" + str(-1 >> 255))
'''
左移:数值变大
数值*2的位移次方
'''
print(a << 5) # 结果 8
'''
#临界值
0<<n位 仍然为0
'''
print("0左移n位:" + str(0 << 5000)) # 结果 0