我必须计算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编码器进行编程,并尝试计算校验位。
答案 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