我正在解析二进制文件,并且必须实现CRC算法以确保文件没有损坏.问题是,当使用更大的数字时,我似乎无法使二进制数学运算.
我试图开始工作的例子:
BigInteger G = new BigInteger("11001", 2);
BigInteger M = new BigInteger("1110010000", 2);
BigInteger R = M.remainder(G);
我期待:
R = "0101"
但我得到:
R = "1100"
我假设0101的其余部分是正确的,因为我在本书中给出了我作为CRC算法的参考(它不是基于Java),但我似乎无法让它工作.我可以得到小的二进制计算,我已经手工解决了,但不是更大的.我承认我还没有手工操作较大的那些,这是我的下一步,但我想看看是否有人可以指出我的代码中有一个明显的缺陷.
任何人都可以确认或否认我的方法是正确的吗?
谢谢
自己做数学.你的号码是
G=25
M=912
R = 912 % 25 = 12
R = 1100 (binary)
Run Code Online (Sandbox Code Playgroud)
事实上,Java似乎正在为您提供正确的答案.手工完成!还有别的错......