如何使用位移模数?

时间:2013-06-06 20:21:07

标签: java optimization

我刚刚开始使用位移来优化我的一些代码来解决SPOJ编程问题。我正在寻找如何使用模数来做到这一点。有没有人对任何可能有帮助的信息有任何建议或链接?

2 个答案:

答案 0 :(得分:3)

无法使用位移进行模数运算。比特移位更像是除法而不是模数。

按位AND可以用于一些非常简单的模运算(例如,& 3而不是% 4),但加速非常小,优化的JRE可能会对其进行优化已经拥有了。

答案 1 :(得分:1)

我希望这不是侮辱性的基本,但模数的位掩码(不是真正的位移)只适用于2的幂的除数。所以位掩码技术往往只在子集中有用你事先知道除数是什么的情况。

另外,如果你可以对除数进行硬编码 - 通常情况下编译器会优化计算,无论如何都可以。