CRC(循环冗余)算法

时间:2021-10-17 11:57:59

CRC(循环冗余)算法简单理解

1、什么是CRC

Cyclical Redundancy Check,简称CRC

利用多项式除法及余数的原理来作错误侦测的。

利用CRC进行检错的过程可简单描述为:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC),附在原始信息后边,构成一个新的二进制码序列数共k+r位,然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。这个规则,在差错控制理论中称为“生成多项式”。

2、实际应用中

l 发送和接收方事先确定一个生成多项式(可以转换成一串二进制,r位);

l 发送装置将原二进制数据左移(r-1)位后(及在后面加r-1个零),除以“生成多项式”,计算出CRC值(r-1位),接在原数据后面一同发送给接收装置;

l 接收装置对收到的含冗余码的数据除以之前约定的“生成多项式”,如果余数为零,则传输无误。

3、实例理解

信息码:1100

(因为1011是四位,所以原信息码左移三位补零)

生成多项式(双方随意确定):1011


计算CRC值:

CRC(循环冗余)算法 余数为010,即为CRC值。

所以发送出去的数据为:1100 010


接收方检验:CRC(循环冗余)算法,若传输无误,则无余数。



参考:

http://wenku.baidu.com/linkurl=-eb7byM60JIORdZbhbqDuBZHLASxlYj60ivjNWG21ZB922Bs6FtdoUdisoLsbUNc1wrKwSUdL5pX7qbPA_bYfwiXHZD_U_XC2b1iLKH5jvS


http://blog.csdn.net/blues1021/article/details/44601649