使用 & 代替 % 来判断整数奇偶性

一般情况下,判断整数的奇偶性都会使用取模预算, 性能方面没有测试,但是由于机器可以直接操作二进制,应该会比较快,不过这点性能提升一般情况下对整体性能的影响不大,可以忽略不计。

1
2
3
4
5
if num%2==0 {
fmt.Println("even")
} else {
fmt.Println("odd")
}

不过,还有一种方式也是类似,使用 按位与 来判断整数奇偶性:

1
2
3
4
5
if num&1==0 {
fmt.Println("even")
} else {
fmt.Println("odd")
}

也能达到相同的效果。

类似的,使用二进制运算也可以进行乘除法的运算:
乘法左移:

1
2
3
4
5
//a = a * 4
a = a << 2

//b = b * 8
b = b << 3

除法右移:

1
2
3
4
5
//a = a / 4
a = a >> 2

//b = b / 8
b = b >> 3

这些都是一些二进制运算的技巧,记下备忘。

0%