位运算

位运算符

1
2
3
4
5
6
7
8
9
10
11
<< //左移

>> //右移

| //或

& //与

~ //取反

^ //异或

实战使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 判断奇偶
x%2 == 1 -> x&1 == 1
x%2 == 0 -> x&1 == 0

x >> 1 -> x/2

// 清零最低位的 1
x = x&(x-1)

// 负数的存储方式为补码,补码:除了符号位取反然后 + 1
// 4 的二进制 100 ,在 Int8 中,完整表示是 0000 0100
// 对应-4 得到顺序 1000 0100 -> 1111 1011 -> 1111 1100
// 得到最低位的 1

x&-x

// x 与上 x 取反等于 0
x&~x = 0

实战题目

  • 52.N 皇后
  • 191.位 1 的个数
  • 231.2 的幂
  • 338.比特位计数
  • 190.颠倒二进制位