<= :指两者时间接近,在1e7次执行下两者时间差在5ms内
求平均数:
1.(a & b) + (a ^ b) >> 1
2.a + b >> 1
3.(a + b) / 2
time:
2 <= 3 < 1
判断奇偶:
1.n & 1 == 1 为奇数
2.n % 2 == 1 …
time:
1 < 2
交换两数:
1.swap(a, b)
2.a ^= b ^= a ^= b
time:
2 < 1
改变正负:
1. a *= -1
2. a = -a
3. a = ~a + 1
time:
2 <= 1 < 3
向上取整直接返回整数(避免精度问题):
(a + b - 1) / b
判断一个浮点数是否整数:
fabs(x - (int)x) < 1e-8
判断是否2的幂,是返回1:
!( x & (x - 1) && x)
换行:
1.cout << endl
2.cout << ‘\n’
3.puts(“”)
time:
3 < 2 < 1
也欢迎各位分享自己的小技巧
竟然 a+b >> 1 时间大于 (a+b)/2 我一直以为位运算会快…
对不起,我刚刚又去做了相应的测试,最后在1e7次执行下a + b >> 1还是比(a + b) / 2平均快1ms,错误已修改