跳至主要内容

9.1 常用技巧

位運算是演算法題目中較為特殊的一種類型,利用二進制位運算的特性可以實現一些奇妙的優化與計算。以下是一些常見的位運算符號及其功能:

  • :按位異或
  • &:按位與
  • |:按位或
  • ~:取反
  • <<:算術左移
  • >>:算術右移

以下是一些常見的位運算特性,其中 0s1s 分別表示只由 01 構成的二進制數字。

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. 消去最低位的 1n & (n - 1)

    • 此操作可以去除 n 的位級表示中最低的那一位。例如:
      n = 11110100
      n - 1 = 11110011
      n & (n - 1) = 11110000
  2. 獲取最低位的 1n & (-n)

    • 此操作可以得到 n 的位級表示中最低的那一位。例如:
      n = 11110100
      -n = 00001100
      n & (-n) = 00000100

以上僅是常用的位運算技巧,如果讀者感興趣,可以進一步探索更多不常見但強大的位運算方法,這裡不再贅述。