我正在尝试进行非常快速的MOD操作。 我在几页中看到我们可以使用AND运算符(Divisor-1)来计算MOD。例如:
result =(100 mod 8)与。相同 结果=(100和7)
如果除数小于8位,它的功能完美,但如果我们计算(1245 mod 67),我们可以看到结果与(1245和66)不同。
那么,如何比使用VB.NET语言提供的MOD运算符更快地计算它?
谢谢!
答案 0 :(得分:2)
使用按位AND
仅适用于模数幂2(并且只有正数)。它不适用于其他数字。见this link
我认为框架中内置的模数运算符很快,您可能无法对其进行改进。
答案 1 :(得分:0)
好吧,100 mod 8
= 100 and 7
有效,因为7是二进制111b
。
无论您拥有什么号码(100位小数为1100100b
),最后3位二进制数字(位)都会由于111b
而保留。对于100,那将是100b
= 4。
现在考虑一下你用1245 mod 67做了什么。
1245是二进制10011011101b
。
67是二进制1000011b
。
你能看到,为什么它不起作用?