按位替代模数给出不同的结果

时间:2018-02-20 09:57:18

标签: java

我正在为Java寻找模数的替代方案。原因是表现。

我必须运行一个循环一段时间的脚本,并在每个循环中执行模数计算。现在我在很多网站上看到了一个有点解决方案,但是在1 % 3的情况下它给出了不同的结果。

 1 % 3; // results in 1
 1 & (3-1); // results in 0

有人可以解释一下吗?大多数计算都很顺利,但这是我发现的一个组合,它没有给出相同的结果。

1 个答案:

答案 0 :(得分:3)

对于正整数,如果i & (n-1)是2的幂,则i % n相当于n。它不适用于所有数字。否则我们都会一直以快速的方式做到这一点。