- Published on
[Python 學習筆記] 3-位元運算
- Authors
- Name
- Vic Chen
Python 位元運算
位元運算(Bitwise Operation)是直接針對二進位位元進行的操作,常用於:
- 高效數值運算
- 狀態旗標(flag)的設定/檢查
位元運算符(Bitwise Operators)
運算符 | 名稱 | 說明 | 範例 | 結果 |
---|---|---|---|---|
& | AND | 對應位都為 1 → 1 | 5 & 3 | 1 |
| | OR | 對應位至少一個 1 → 1 | 5 | 3 | 7 |
^ | XOR | 對應位不同 → 1 | 5 ^ 3 | 6 |
~ | NOT | 取反 (二補數) | ~5 | -6 |
<< | 左移 | 所有位向左移 n 位 | 5 << 1 | 10 |
>> | 右移 | 所有位向右移 n 位 | 5 >> 1 | 2 |
位元運算示意
以 5
和 3
的 8-bit 二進位為例:
5 = 00000101
3 = 00000011
AND(&):
00000101
& 00000011
= 00000001 -> 1
OR(|):
00000101
| 00000011
= 00000111 -> 7
XOR(^):
00000101
^ 00000011
= 00000110 -> 6
NOT(~):
~00000101
= 11111010 -> -6 (Python 用補數表示)
左移(<<):
5 << 1
00000101 -> 00001010 -> 10
右移(>>):
5 >> 1
00000101 -> 00000010 -> 2
小技巧
- 用位元檢查特定位
x = 0b1010 # 10
print(bool(x & 0b0010)) # True,檢查第二位是否為 1
- 快速乘除以 2
x = 5
print(x << 1) # 10,相當於乘以 2
print(x >> 1) # 2,相當於整除 2
- 快速交換變數(XOR Swap)
a, b = 3, 5
a ^= b
b ^= a
a ^= b
print(a, b) # 5 3
TIP
位元運算常出現在演算法或硬體開發中,但一般高階應用不一定會頻繁用到。