哪儿看到的文章
知乎上看到这篇文章: 链接
题目
判断一个整数是否是奇数, 按如下方法给出方法体.
public boolean isOdd(int i);
思考过程
取余来判断
负数怎么办
移位运算
按位与(&)
这是终极操作
效率
位运算和取模运算最终效率差不多的原因是什么?
编译器会对2的指数取模优化成位运算
取模优化
为什么取模会优化成位运算?
首先, '按位与’运算有如下规则:
按位运算时, &0则一定为0, &1则为原数.
就有如下推论:
x%2 >>> x&1
x%4 >>> x&3
x%8 >>> x&7
x%n >>> x&(n-1)
结论:
2的指数取模可优化成位运算