CRC校验的示例计算

4
我希望确认我是否正确理解了CRC计算的概念。我将提供两个例子,第一个是使用常规减法计算余数,第二个使用这种奇怪的XOR方法。
数据位:D = 1010101010。
生成位:G = 10001。
1)使用减法方法计算余数:
10101010100000
10001|||||||||
-----|||||||||
  10001|||||||
  10001|||||||
  -----|||||||
  000000100000
         10001
         -----
          1111

R = 1111.

2) 异或方法:

10101010100000
10001|||||||||
-----|||||||||
  10001|||||||
  10001|||||||
  -----|||||||
  00000010000|
        10001|
        ------
        000010

R = 0010.


我应该附上问题,好吧:CRC使用XOR方法,对吗?我做的XOR示例正确吗? - NameZero912
3个回答

2

在末尾添加1111并不能满足需求,因为

10927 % 17 != 0

请注意,根据定义,除法应该是模除法,因为它基于模数学。


1

两个答案都是正确的。=)

(重新检查第一个答案:
10101010100000(二进制)mod 10001(二进制)
= 10912(十进制)mod 17(十进制)
= 15(十进制)
= 1111(二进制)。)


-2

减法计算错误。在二进制模运算中,减法、加法、除法和乘法是相同的。因此,异或运算是正确的。


乘法不同(1*1 = 1,其他都是0),而除法似乎最多只是琐事。 - Ivo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接