位元運算子
什麼是位元運算子?
位元運算子是用來操作二進位數字的運算子。在 Python 中,這些運算子直接作用於數字的二進位表示形式,並允許我們對數字進行位元級別的操作。這在處理低級別數據操作、嵌入式系統編程、甚至某些數學運算中非常有用。
常見的位元運算子及其功能
&
(位元與):對應位的運算。如果兩個位都是 1,結果是 1;否則結果是 0。a = 4 # 二進位:100 b = 2 # 二進位:010 print(a & b) # 位與:0
|
(位元或):對應位的運算。如果至少有一個位是 1,結果是 1;否則結果是 0。print(a | b) # 位或:6(二進位:110)
^
(位元異或):對應位的運算。如果兩個位不同,結果是 1;如果相同,結果是 0。print(a ^ b) # 位異或:6(二進位:110)
~
(位元非):對每一位進行取反運算。即將 0 變為 1,1 變為 0。需要注意的是,在 Python 中使用~
進行取反會得到二補數。print(~a) # 位非:-5(在二進位中,~4 變為 -5)
<<
(左移):將位元向左移動指定的位數,右側補零。這相當於數字乘以 2 的指定次方。print(a << 1) # 左移:8(二進位:1000)
>>
(右移):將位元向右移動指定的位數,左側補零(對於正數)或補 1(對於負數)。這相當於數字除以 2 的指定次方並取整。print(a >> 1) # 右移:2(二進位:10)
實際應用範例
位元運算子在處理二進位數據時非常強大,可以用於檢查數字的特定屬性或進行低級別數據操作。以下是如何使用位元運算子來檢查數字的奇偶性的範例。
範例:檢查數字的奇偶性
number = 7 is_even = (number & 1) == 0 # 使用位元運算檢查是否為偶數 print("這是一個偶數:", is_even) # False,因為 7 是奇數
範例解析:
- 檢查奇偶性:在二進位中,所有偶數的最低有效位(最右邊的位元)都是 0,所有奇數的最低有效位都是 1。通過使用位元與運算(
&
)將數字與 1 進行比較,我們可以快速檢查數字的奇偶性。如果number & 1
結果為 0,則該數字是偶數;否則是奇數。