按位元運算子執行逐位運算。假設變數a = 60
; 和變數b = 13
; 現在以二進位制格式,它們將如下 -
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
Python的內建函式bin()
可用於獲取整數的二進位制表示形式。
以下是Python語言支援位運算操作符 -
運算子 | 描述 | 範例 |
---|---|---|
& |
如果它存在於兩個運算元中,則操作符複製位到結果中 | (a & b) 結果表示為 0000 1100 |
如果它存在於任一運算元,則複製位。 | (a b) = 61 結果表示為 0011 1101 |
|
^ |
二進位制互斥或。如果它是一個運算元集合,但不是同時是兩個運算元則將複製位。 | (a ^ b) = 49 (結果表示為 0011 0001 ) |
~ |
二進位制二補數,它是一元的,具有「翻轉」的效果。 | (~a ) = -61 有符號的二進位制數,表示為1100 0011 的二補數形式。 |
<< |
二進位制左移,左運算元的值由右運算元指定的位數左移。 | a << 2 = 240 (結果表示為 1111 0000 ) |
>> |
二進位制右移,左運算元的值由右運算元指定的位數右移。 | a >> 2 = 15 (結果表示為0000 1111 ) |
假設變數a
的值是60
,變數b
的值是13
,參考以下程式碼實現 -
#!/usr/bin/python3
#coding=utf-8
#save file : bitwise_operators_example.py
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
print ('a=',a,':',bin(a),'b=',b,':',bin(b))
c = 0
c = a & b; # 12 = 0000 1100
print ("result of AND is ", c,':',bin(c))
c = a | b; # 61 = 0011 1101
print ("result of OR is ", c,':',bin(c))
c = a ^ b; # 49 = 0011 0001
print ("result of EXOR is ", c,':',bin(c))
c = ~a; # -61 = 1100 0011
print ("result of COMPLEMENT is ", c,':',bin(c))
c = a << 2; # 240 = 1111 0000
print ("result of LEFT SHIFT is ", c,':',bin(c))
c = a >> 2; # 15 = 0000 1111
print ("result of RIGHT SHIFT is ", c,':',bin(c))
將上面程式碼儲存到檔案: bitwise_operators_example.py 中,執行結果如下 -
F:\worksp\python>python bitwise_operators_example.py
a= 60 : 0b111100 b= 13 : 0b1101
result of AND is 12 : 0b1100
result of OR is 61 : 0b111101
result of EXOR is 49 : 0b110001
result of COMPLEMENT is -61 : -0b111101
result of LEFT SHIFT is 240 : 0b11110000
result of RIGHT SHIFT is 15 : 0b1111