当前位置: 首页 > news >正文

【2-12】CRC循环冗余校验码

前言

前面我们介绍了纠错码——海明码,同时还说明了为什么现代网络常用检错重传而不是纠错,本文介绍CRC循环冗余校验码。

文章目录

  • 前言
  • 1. 简单定义
  • 2. 生成规则
  • 3. 例题
    • 3.1 例1
    • 3.2 例2
  • 后记
  • 修改记录

1. 简单定义

CRC(Cyclic Redundancy Check) 中文名称为循环冗余校验码,是一种广泛应用于数据传输和存储中检测错误的方法。它通过在发送端对数据进行特定的数学运算生成一个校验码,并将此校验码附加到数据后面一起发送。接收端收到数据后,使用相同的算法对数据和校验码进行验证,以确定数据在传输过程中是否发生了错误。

CRC 基于生成多项式(Generator Polynomial),由于数学证明方面较为复杂,且不是本文重点,不再论述。我们会用即可。

2. 生成规则

  1. 判断校验位数:生成多项式的最高次方是几,校验位就是几位。
  2. 补齐数据位后的零,有几个校验位就补几个零。
  3. 提取生成多项式的系数,别忽略零以及x的零次方。
  4. 用第二步的结果除以第三步,因为二进制中正好是异或运算,所以就是异或。

3. 例题

3.1 例1

采用CRC进行查错校验,生成多项式为: G ( x ) = x 4 + x + 1 G(x)= x^4 + x +1 G(x)=x4+x+1,信息码字为 10111,CRC校验码是?

  1. 首先判断校验位是几位,发现 x 4 x^4 x4 是最高次方,所以补4个零。
  2. 得到信息码字加校验位为 :101110000
  3. 提取生成多项式的系数:10011
  4. 计算

在这里插入图片描述
确认最终结果是:1100

3.2 例2

CRC是数据链路层常用的检错码,若生成多项式为 x 5 + x 3 + 1 x^5+x^3+1 x5+x3+1 传输数据 10101110 ,则CRC校验码是?

在这里插入图片描述

后记

文中有任何错误、遗漏,烦请各位老铁在评论区指出,共同学习进步。

修改记录

更新日期修改内容
2025年4月17日完成初稿

相关文章:

  • 从原理到实践:NFS复杂故障处理方法论
  • 【人工智能】大模型的Prompt工程:释放DeepSeek潜能的艺术与科学
  • 快速迭代收缩-阈值算法(FISTA)
  • Python学习笔记(五)(列表与元组)
  • vue3 element-plus el-time-picker控制只显示时 分,并且控制可选的开始结束时间
  • AOSP世界时间的更新
  • 基于多模态双路TCN-SE-YOLO的小目标检测
  • 三维领域的语义分割
  • 【深基18.例3】查找文献-图的储存与遍历
  • 无线uniapp调试设备
  • EthernetiP转modbusTCP网关在加氢催化中的应用
  • Flask(补充内容)配置SSL 证书 实现 HTTPS 服务
  • Flask(2): 在windows系统上部署项目2
  • 【C】初阶数据结构10 -- 希尔排序
  • 知识库Qanyting部署问题总结
  • 使用sealos部署kubernetes集群并实现集群管理
  • Idea连接远程云服务器上的MySQL,开放云服务器端口
  • Markdown 教程
  • Linux驱动开发-①regmap②IIO子系统
  • Spring Boot 项目中发布流式接口支持实时数据向客户端推送
  • 网络主播直播泄机密,别让这些“小事”成威胁国家安全的“突破口”
  • 中俄就应对美加征所谓“对等关税”等问题进行深入交流
  • 吉林市马拉松5月18日开赛,奖牌、参赛服公布
  • 遇冰雹天气,西安机场新航站楼成“水帘洞”
  • 泽连斯基称与特朗普通话讨论停火事宜
  • 《2025城市青年旅行消费报告》发布,解码青年出行特征