立即學習:https://edu.csdn.net/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