tyltr技术窝

位运算是一项既实用又装逼的技能。废话不多说,直接上干货,本文采用go语言进行说明

1.乘以2或除以2#

左移乘2,右移除2
注:除以2,对负奇数不可用

1
2
3
4
5
6
7
8
9
//  乘以2
func Mul2(n int) int {
return n << 1
}

// 除以2,对负奇数不可用
func Div2(n int) int {
return n >> 1
}

2.判断奇偶#

原理:因为二进制中所有偶数的最后一位一定是0,所以与1进行操作。结果1,则是奇数;否则偶数。

1
2
3
4
5
// 判断某数是否是奇数
func isOdd(n int) bool {
return n&1 == 1

}

3.判断是否符号相同,即都负或都正#

注:对于0的判断,不同机器可能不同。所以建议不要传递 0 进行判断

1
2
3
func sameSign(n,m int) bool {
return (n^m)>=0
}