【2-12】CRC循环冗余校验码
前言
前面我们介绍了纠错码——海明码,同时还说明了为什么现代网络常用检错重传而不是纠错,本文介绍CRC循环冗余校验码。
文章目录
- 前言
- 1. 简单定义
- 2. 生成规则
- 3. 例题
- 3.1 例1
- 3.2 例2
- 后记
- 修改记录
1. 简单定义
CRC(Cyclic Redundancy Check)
中文名称为循环冗余校验码,是一种广泛应用于数据传输和存储中检测错误的方法。它通过在发送端对数据进行特定的数学运算生成一个校验码,并将此校验码附加到数据后面一起发送。接收端收到数据后,使用相同的算法对数据和校验码进行验证,以确定数据在传输过程中是否发生了错误。
CRC 基于生成多项式(Generator Polynomial),由于数学证明方面较为复杂,且不是本文重点,不再论述。我们会用即可。
2. 生成规则
- 判断校验位数:生成多项式的最高次方是几,校验位就是几位。
- 补齐数据位后的零,有几个校验位就补几个零。
- 提取生成多项式的系数,别忽略零以及x的零次方。
- 用第二步的结果除以第三步,因为二进制中正好是异或运算,所以就是异或。
3. 例题
3.1 例1
采用CRC进行查错校验,生成多项式为: G ( x ) = x 4 + x + 1 G(x)= x^4 + x +1 G(x)=x4+x+1,信息码字为 10111,CRC校验码是?
- 首先判断校验位是几位,发现 x 4 x^4 x4 是最高次方,所以补4个零。
- 得到信息码字加校验位为 :101110000
- 提取生成多项式的系数:10011
- 计算
确认最终结果是:1100
3.2 例2
CRC是数据链路层常用的检错码,若生成多项式为 x 5 + x 3 + 1 x^5+x^3+1 x5+x3+1 传输数据 10101110 ,则CRC校验码是?
后记
文中有任何错误、遗漏,烦请各位老铁在评论区指出,共同学习进步。
修改记录
更新日期 | 修改内容 |
---|---|
2025年4月17日 | 完成初稿 |