按位模数,数字大于2³²

时间:2013-12-22 11:06:19

标签: c bit-manipulation division modulo

我必须计算C中两个大数的余数。一个大小为938或256位,另一个大小为85位。两者都没有2 ^ n值!

我的基本想法是将每个位作为短数组的一个元素,并使用基本位操作计算余数。但我不知道该怎么做。所以我希望这里有人可以帮助我。

对于那些感兴趣的人,我正在根据第36-39页的UNISIG-SUBSET 036 http://www.era.europa.eu/Document-Register/Documents/Set-2-Index009-SUBSET-036%20v300.pdf对ETCS编码器进行编程,并尝试计算校验位。

1 个答案:

答案 0 :(得分:0)

假设您正在使用十进制基数,并且想要计算X mod Y,您可以执行以下操作:

1. mod = 0;
2. mod = ((mod * 10) + mostCignificantDigit)%Y;
3. remove the mostCignificantDigit from your number, and return to 2.

换句话说,假设您有数字数组A中的数字:

mod = 0;
for (int index = 0; index < A.size(); ++index)
        mod = ((mod*10)+A[index]) %Y