crc循环冗余校验码c语言,CRC循环冗余校验码的生成

众所周知,不可能有永远都不会出错的人,同样也不可能有永远不出错的计算机,永远不出错的数据。

人有知错能改的觉悟,计算机也有,不过计算机没有人类聪明,只能通过一个特定的方法进行自我改正,这就是校验码存在的必要了。

一般用得比较多的校验码有奇偶校验码,CRC循环冗余校验码,海明校验码等。

这里只介绍用的最多的CRC循环冗余校验码。

何为校验码

校验码是通过一种计算方法,发出端在原始数据的尾部添加若干数据;然后接收端通过计算得出数据有无错误,并且能把错误的数据还原成正确的数据。

例如,原始数据为1010,我们通过在其尾部添加若干数据,比如101,则数据变成了1010101,将这个新的数据发送出去;假如在发送过程中出现错误,数据变成了1110101,则接收端能根据1110101还原成原始正确的数据1010。

CRC循环冗余校验码的特点

CRC码是基于模2运算建立编码规律的校验码(模2运算可以简单的理解为异或运算)。

编码方法:

1.将原始数据用一个多项式M(x) = A*X^(n-1)+B*X^(n-2)+…+N*X^(1)+P*X^(0)

比如说原始数据是1010,则表示为M(x) = 1*X^(3)+0*X^(2)+1*X^(1)+0*X^(0)

2.将原始数据左移k位,得到M(X)*X^k,形成了n+k位信息。

上面的1010,左移3位,得到1010 000

3.用多项式M(X)*X^k 除以(或者说异或)一个特定的

你可能感兴趣的:(crc循环冗余校验码c语言)