移位运算

简单的benchmark

移位运算为什么比乘法除法快

https://blog.csdn.net/Hk_john/article/details/69942784

从效率上看,使用移位指令有更高的效率,因为移位指令占2个机器周期,而乘除法指令占4个机器周期。从硬件上看,移位对硬件更容易实现,所以会用移位,移一位就乘2,这种乘法当然考虑移位了。

说得好像很有道理的感觉,(根据上一篇做的基准测)他们(移位运算、乘法运算)的速度确实相差了2倍的样子

用移位运算判断数的奇偶性

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
// 疑问:二进制最后一位等于1,它就一定是奇数吗?
// 结论:也就是说n&1==1可以判断n是不是奇数,效率还高
func Test2101051702(t *testing.T) {
	for i := 1; i <= 100000; i++ {
		if i&1 == 1 && i % 2 == 0 { //左边:末位为1,右边:偶数
			fmt.Println(i)
			break
		}
	}
}
// 输出结果如下,可推——〉不存在二末位不为1
/*
=== RUN   Test2101051702
--- PASS: Test2101051702 (0.00s)
PASS
ok  	test.go/leetcode/tencent_50	0.003s
*/