Python按位元運算子範例

2019-10-16 23:08:07

按位元運算子執行逐位運算。假設變數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