我刚刚开始使用位移来优化我的一些代码来解决SPOJ编程问题。我正在寻找如何使用模数来做到这一点。有没有人对任何可能有帮助的信息有任何建议或链接?
答案 0 :(得分:3)
无法使用位移进行模数运算。比特移位更像是除法而不是模数。
按位AND可以用于一些非常简单的模运算(例如,& 3
而不是% 4
),但加速非常小,优化的JRE可能会对其进行优化已经拥有了。
答案 1 :(得分:1)
我希望这不是侮辱性的基本,但模数的位掩码(不是真正的位移)只适用于2的幂的除数。所以位掩码技术往往只在子集中有用你事先知道除数是什么的情况。
另外,如果你可以对除数进行硬编码 - 通常情况下编译器会优化计算,无论如何都可以。