位運算符
含義 | 運算符 | 說明 | 示例 |
左移 | << | 相當于十進制的*2 | 0011=>0110(3*2=6) |
右移 | >> | 相當于十進制的//2 | 0110=>0011(6//2=3) |
按位或 | | | 有一位為1則為1 | 0 0 1 1 1 0 1 1 |
按位與 | & | 兩位都為1才為1 | |
按位取反 | ~ | 1 1 0 0 | |
按位異或 | ^ | 相同為0 不同為1 | 1 0 0 0 |
XOR-異或
相同為0,不同為1。
異或的四大定律
- 恒等率
- 歸零率
- 交換律
- 集合率
一個數和0做XOR運算等于本身
a⊕0 = a
一個數和其本身做XOR運算等于0
a⊕a = 0
交換率和結合率一起使用
a⊕b⊕a = (a⊕a)⊕b = 0⊕b = b
實戰常用技巧
判斷奇偶性
- x % 2 == 1 --> (x & 1) == 1
- x % 2 == 0 --> (x & 1) == 0
取兩個數的平均值(二分常用)
- mid = (left + right) // 2 --> (left + right) >> 1
把最低位的1 置為0
- x & (x - 1)
得到最低位的1
- x & - x