输入
2
的
n
次方:如果突然要你输入
2
的
19
次方,你是不是还要想一下呢?敲个
524288
多累啊。用位运算:
1 << 19
又快又准。
乘除
2
的倍数:千万不要用乘除法,非常拖效率。只要知道左移
1
位就是乘以
2
,右移
1
位就是除以
2
就行了。比如要算
25 * 4
,用
25 << 2
就好啦。
判断偶数:
a % 2
取模是最常用的判断方法之一。这样要用到除法运算,不好。实际上,还是用位运算解决:
a & 1
。效果和
a % 2
是一样的,但是要快得多。
对
2
的倍数取模:类似上面的方法。对
2
的倍数取模,只要将数与
2
的倍数
-1
做与运算就可以了。如:
a % 8 = a & 8-1
节省乘除法可以提高效率。
判断一个整数是否是处于
0-65535
之间(常用的越界判断):用一般的
(a >= 0) && (a <= 65535)
可能要两次判断。改用位运算只要一次:
a & ~((1 << 16)-1)
后面的常数是编译时就算好了的。其实只要算一次逻辑与就行了。
算掩码:比如一个截取低
6
位的掩码:
0x3F
用位运算这么表示:
(1 << 6) - 1
这样也非常好读取掩码,因为掩码的位数直接体现在表达式里。