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 的位級表示中最低的那一位。例如:
以上僅是常用的位運算技巧,如果讀者感興趣,可以進一步探索更多不常見但強大的位運算方法,這裡不再贅述。