我知道可以使用按位运算符计算 2 的幂的模
x % 2^n == x & (2^n - 1).
但我想知道是否存在任何通用的按位算法来找到任何数字的模数不是 2 的幂。例如,
7%5
先感谢您。
最佳答案
不,没有在不实际进行除法的情况下找到除法余数的通用方法。
由于二进制表示,二的幂是一个异常(exception),它允许您使用移位除以二。相同的原理正在发挥作用,它允许您通过简单地将数字从末尾删除来将十进制数除以十的幂。
显然,没有什么能阻止您编写代码 division using bit operations .您还需要对减法进行编码,因为该算法要求将其作为“原始运算”。可以想象,这将非常缓慢。
关于C - 非 2 的幂数的模数按位运算的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49949579/