你的常数
0x82F63B78
是x以下多项式系数的反映
32
,因此它表示:
x
32
+x
28
+x
27
+x
26
+x
25
+x
23
+x
22
+x
20
+x
19
+x
18
+x
14
+x
13
+x
11
+x
10
+x
9
+x
8.
+x
6.
+1。
您可以将该多项式输入为
100011110110111000110111101000001
在…上
this CRC calculator website
逐步完成分工。
为了只显示除法,我们想复制for循环的作用。我们将删除例程中的前处理和后处理,初始化
crc
到零,而不是做一个排他或在最后。然后,您的问题中基于ASCII字母“k”计算的CRC给出
0xf84f3859
。让我们把它贯穿整个部门。将该网页上的数据设置为“k”,
0x6b
,反射,即
11010110
。结果是:
现在我们反映结果的余数
10011010000111001111001000011111
得到
0xf84f3859
.瞧。
您也可以使用all one的初始值进行除法运算(
0xffffffff
)而不是全零。为此,将40位被除数的前32位反转。然后:
1101011000000000000000000000000000000000
变成
0010100111111111111111111111111100000000
进行划分(这是我自己的代码,其输出不如网站漂亮):
10100111111111111111111111111100000000
100011110110111000110111101000001
--------------------------------------
101000100100011100100001011100100000
100011110110111000110111101000001
------------------------------------
1011010010100100010110110100101000
100011110110111000110111101000001
----------------------------------
11101111001010011011001110101010
quotient: 101010
remainder: 11101111001010011011001110101010
取余数,反映它,并反转它(最终的exclusive或),你得到
0xaa326b08
。