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值:
余数为010,即为CRC值。
所以发送出去的数据为:1100 010
接收方检验:,若传输无误,则无余数。
参考:
http://wenku.baidu.com/linkurl=-eb7byM60JIORdZbhbqDuBZHLASxlYj60ivjNWG21ZB922Bs6FtdoUdisoLsbUNc1wrKwSUdL5pX7qbPA_bYfwiXHZD_U_XC2b1iLKH5jvS
http://blog.csdn.net/blues1021/article/details/44601649