9.1 常用技巧
位運算
是演算法題目中較為特殊的一種類型,利用二進制位運算的特性可以實現一些奇妙的優化與計算。以下是一些常見的位運算 符號及其功能:
∧
:按位異或&
:按位與|
:按位或~
:取反<<
:算術左移>>
:算術右移
以下是一些常見的位運算特性,其中 0s
和 1s
分別表示只由 0
或 1
構成的二進制數字。
x ^ 0s = x x & 0s = 0 x | 0s = x
x ^ 1s = ~x x & 1s = x x | 1s = 1s
x ^ x = 0 x & x = x x | x = x
除此之外,以下是一些經常用到的特殊技巧:
-
消去最低位的 1:
n & (n - 1)
- 此操作可以去除 n 的位級表示中最低的那一位。例如:
n = 11110100
n - 1 = 11110011
n & (n - 1) = 11110000
- 此操作可以去除 n 的位級表示中最低的那一位。例如:
-
獲取最低位的 1:
n & (-n)
- 此操作可以得到 n 的位級表示中最低的那一位。例如:
n = 11110100
-n = 00001100
n & (-n) = 00000100
- 此操作可以得到 n 的位級表示中最低的那一位。例如:
以上僅是常用的位運算技巧,如果讀者感興趣,可以進一步探索更多不常見但強大的位運算方法,這裡不再贅述。