go位操作

操作符

AND 按位与 a&b
OR 按位或 a 竖杠b
XOR 异或 a^b
NOT 按位取反 ^a
AND NOT 按位清除 a&^b
LEFT SHIFT 左移 a<<1
RIGHT SHIFT 右移 a>>1

几种实例

  • 变换符号
1
2
3
func nagation(a int) int {
return ^a + 1
}
  • 呼唤变量值
1
2
3
4
5
6
func swap(a, b int) (int, int) {
a ^= b
b ^= a
a ^= b
return a, b
}
  • 求偶数
1
2
3
4
5
6
7
8
func even(a int) (array []int) {
for i := 0; i < a; i++ {
if i&1 == 0 {
array = append(array, i)
}
}
return array
}

应用

bitmap 的实现