数学,RNS残差数系统,2 ^ n + 3模数计算方法。 c ++,bitset

时间:2016-05-16 19:30:15

标签: c++ math design-patterns modulo bitset

我正在寻找从更大的数字计算模2 ^ n +3的方法。 问题是,我不知道如何快速计算它,网上没有任何东西。

我得到了2 ^ n -3的模数的一些帮助,它的工作方式是这样的:

按模数的最大长度分开位,然后对每个获得的部分进行分离。将它们乘以3 ^ m,其中m =部件的数量(例如part_1 * 3 ^ 0,part_2 * 3 ^ 1,part_3 * 3 ^ 2)。您可以使用快速方法来获取乘法位。当你有3 ^ 2 = 9 = 8 + 1 = 2 ^ 3 +1时。现在您可以将移动的3添加到已使用部分的左侧位并添加到它不移动相同的部分。这样我就可以得到每个部分的结果然后添加它们并在获得的数字上再次执行它,直到我的数字低于我的模数。

实施例: 我们有位1100101101(813),这是我们的数字,现在我们使用modulo 2 ^ n-3对我们来说(2 ^ 4)-3它基本上是13.我们的模数是二进制的1101。现在我们做1100101101 mod 1101.我们将数字分成4位数部分。 1101首先从右边开始,它是1101 * 1,接下来是0010,它是0010 * 3,其中3是(2 + 1)所以我们可以使用类似0010 - > 0100通过移动位并向其添加0010为剩下的1,接下来是11所以它是11 * 3 ^ 2(2 ^ 3 +1)所以我们有3个位置移动我们得到11000 + 11 =添加位我们有3个数字1101 + 0110 + 11011 = 101110.现在我们重复1110 + 110 = 101110.再次我们重复1110 + 110 = 10100,重复我们有0100 + 11 = 111.所以我们得到7结束813 mod 13 = 7.正确。

因此模数2 ^ n + 3有任何模式吗?

0 个答案:

没有答案