我必须计算 C 中两个大数的余数。一个大小为 938 或 256 位,另一个大小为 85 位。两者都不是 2^n 值!
我的基本想法是把每一位都作为一个短数组的一个元素,然后用基本的位操作计算余数。但我不知道该怎么做。所以我希望这里有人可以帮助我。
对于那些感兴趣的人,我正在根据 UNISIG-SUBSET 036 http://www.era.europa.eu/Document-Register/Documents/Set-2-Index009-SUBSET-036%20v300.pdf 编写 ETCS - 编码器在第 36 - 39 页,我正在尝试计算校验位。
最佳答案
假设您使用的是十进制,并且您想要计算 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
关于c - 数字大于 2³² 的按位取模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20728709/