有时需要追求效率,会代替一些算术运算。
- 求商:a >> n <=> a / 2^n
- 求积:a << n <=> a * 2^n
- 求余:a & ((1 << n) - 1) <=> a % 2^n
- 奇偶判断:a & 1 == 1 <==> a % 2 == 1
一般1表示选中或者启动项,0表示未选或者关闭项。
- 获取全部项:(1 << n) - 1
- 获取第n项:1<<(n-1)
- 获取反选项:~a
- 启动目标项:a |= b
- 合并两选项:a | b
- 关闭目标项:a &= ~b
- 查看公共项:a & b
- 查看改变项:a1 ^ a2
- 查看未变项:~(a1 ^ a2) = ~a1 ^ a2 = a1 ^ ~a2