如何快速计算除数大于8,16,32的MODULUS

时间:2015-08-03 17:56:13

标签: vb.net modulus

我正在尝试进行非常快速的MOD操作。 我在几页中看到我们可以使用AND运算符(Divisor-1)来计算MOD。例如:

result =(100 mod 8)与。相同   结果=(100和7)

如果除数小于8位,它的功能完美,但如果我们计算(1245 mod 67),我们可以看到结果与(1245和66)不同。

那么,如何比使用VB.NET语言提供的MOD运算符更快地计算它?

谢谢!

2 个答案:

答案 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

你能看到,为什么它不起作用?