CRC 校验原理及步骤
什么是 CRC 校验?
CRC 即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和
校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进
行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传
输的正确性和完整性。
CRC 校验原理:
其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,
这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。当然,这个附加的数不
是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这
里不是直接采用二进制除法,而是采用一种称之为“ 模 2 除法”)。到达接收端后,再把接
收到的新帧除以(同样采用“ 模 2 除法”)这个选定的除数。因为在发送端发送数据帧之前
就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。
如果有余数,则表明该帧在传输过程中出现了差错。
模 2 除法:
模 2 除法与算术除法类似,但每一位除的结果不影响其它位,即不向上一位借位,所以实际
上就是异或。在循环冗余校验码(CRC)的计算中有应用到模 2 除法。
例:
CRC 校验步骤:
CRC 校验中有两个关键点,一是预先确定一个发送送端和接收端都用来作为除数的二进制比
特串(或多项式),可以随机选择,也可以使用国际标准,但是最高位和最低位必须为 1;
二是把原始帧与上面计算出的除数进行模 2 除法运算,计算出 CRC 码。
具体步骤:
1. 选择合适的除数
2. 看选定除数的二进制位数,然后再要发送的数据帧上面加上这个位数-1 位的 0,然后用
新生成的帧以模 2 除法的方式除上面的除数,得到的余数就是该帧的 CRC 校验码。注意,
余数的位数一定只比除数位数少一位,也就是 CRC 校验码位数比除数位数少一位,如果前