1、位运算判断奇偶数
利用位运算,取数字二进制的最后一位再进行判断
if((K & 1) == 1)
{
//K为奇数
}
else
{
//K为偶数
}
位运算的优先级最低,但是运算速度却最快,所以用 i & 1判断奇偶,要比用i%2==1来判断大约快4倍。在一个要执行上万次的for循环里,能明显提升判断效率。
2、位运算取余(模)
对除数为2、4、8…这类(2的i次方)取余的运算可以利用位运算:
被除数 | 除数 | 余数 |
---|---|---|
K | 2 | K & 1 |
K | 4 | K & 3 |
K | 8 | K & 7 |
K | 16 | K & 15 |
K | … | … |
K | 2^i | K & ( 2^i - 1) |
仔细研究发现,其实 & 运算就是截取了 K 的二进制的后 i 位,也就是余数。
位运算判断奇偶数,是除数为 2 的取余运算的应用。
3、位运算实现乘除法
通过对数字 K 的 右移 >> 和左移 << 运算可以实现整数除和乘法运算,详细介绍见:
位运算实现乘除法