# 哪儿看到的文章

知乎上看到这篇文章: 链接 (opens new window)

# 题目

判断一个整数是否是奇数, 按如下方法给出方法体.

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的指数取模可优化成位运算

修改于: 8/11/2022, 3:17:56 PM