CRC码的计算

简介

  循环冗余码是最常用的差错控制编码方法之一,又称为CRC码,它是利用除法及余数的原理来作错误侦测(Error Detecting)的。
  CRC码又称为多项式码,任何一个由二进制数位串组成的代码,都可以唯一地与一个只含有0和1两个系数的多项式建立一一对应的关系。例如,代码1010111对应的多项式为X^6+X^4+X^2+X+1,同样多项式X^5+X^3+X^2+X+1,对应的代码为101111。

CRC码详解

  CRC码在发送端编码和接收端检验时,都可以利用事先约定的生成多项式G(X)来得到。k位要发送的信息位可对应于一个(k-1)次多项式K(X),r位冗余位则对应于一个(r-1)次多项式R(X),由k位信息位后面加上r位冗余位组成的n=k+r位码字则对应于一个(n-1)次多项式T(X)=X^r·K(X)+R(x)。例如

信息位:1011001(K=7)   ——> K(X)=X^6+X^4+X^3+1
冗余位:1010(r=4)     ——> R(X)=X^3+X
码字: 10110011010(n=11)  ——> T(X)=X^4·K(X)+R(X)
=X^10+X^8+X^7+X^4+X^3+X

  由信息位产生冗余位的编码过程,就是已知K(X)求R(X)的过程。在CRC码中可以通过找到一个特定的r次多项式G(X),然后用X^r·K(X)去除以G(X),得到的余式就是R(X)。

计算

  以上例中K(X)=X^6+X^4+X^3+1为例(信息位为1011001),若G(X)=X^4+X^3+1(对应代码11001),取r=4,则X^4·K(X)=X^10+X^8+X^7+X^4(对应代码为10110010000),其由模2除法求余式R(X)的过程所示如下:
         1101010
11001 ) 10110010000 ¯
         11001
        11110 ¯
           11001
           11110
           11001
             11100
              11001
               1010

仅用于学习使用

猜你喜欢

转载自blog.csdn.net/g165945348/article/details/79604945