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

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程:(白话解释)

我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) Gx) 是已知的),根据CRC编码的规则,得到编码后的消息 T T T,将该“加密”后的消息 T T T 发送给接收方,接收方能够根据 T T T,检验发送消息的过程中是否出现了错误。

算法步骤:

  1. k k k 位信息写成 k − 1 k-1 k1 阶多项式 M ( x ) M(x) M(x)
  2. 设生成多项式 G ( x ) G(x) G(x)的阶为 r r r
  3. 用模2除法计算 x r M ( x ) / G ( x ) x^rM(x)/G(x) xrM(x)/G(x) ,获得余数多项式 R ( x ) R(x) R(x)
  4. 用模2减法球的传送多项式 T ( x ) T(x) T(x) T ( x ) = x r M ( x ) − R ( x ) T(x)=x^rM(x)-R(x) T(x)=xrM(x)R(x),则 T ( x ) T(x) T(x) 多项式系数序列的前 k k k位位信息位,后 r r r位为校验位,总位数 n = k + r n=k+r n=k+r
  5. 接收方解码方法:将 T ( x ) T(x) T(x) 除以 G ( x ) G(x) G(x) ,得到一个属,如果这个余数为0,则说明传输中无错误发生,否则说明传输有误。

(算法步骤没看明白没有关系,都是看示例想清楚的,看下面给出示例就好~)

CRC计算示例

题目描述:待发送的信息为1001,生成多项式为G(x)=1011,计算余数R(x),传递的信息T(x),展示循环冗余校验的过程。
生成多项式 G ( x ) = 1011 G(x)=1011 G(x)=1011,对应的阶为 r = 3 r=3 r=3 (总位数-1),
将原始待发送的信息 M ( x ) M(x) M(x)左移 r = 3 r=3 r=3 位,得到 M ( x ) ′ = 1001000 M(x)'=1001000 M(x)=1001000(右侧补3个0),
用左移后的 M ( x ) ′ M(x)' M(x)除以给定的生成多项式 G ( x ) G(x) G(x)
请添加图片描述
运算结果得到余数 R ( x ) = 110 R(x)=110 R(x)=110
将待发送信息 M ( x ) M(x) M(x) 左移后的信息加上得到的余数 R ( x ) R(x) R(x),就得到应传送的信息
T ( x ) = 1001000 + 110 = 1001110 T(x)=1001000+110=1001110 T(x)=1001000+110=1001110
发送码即为 1001110 1001110 1001110,其中前4位为原始发送信息为 1001 1001 1001,后3位为校验位 110 110 110

  • ( M(x) = 1001 )(信息码:9)
  • ( G(x) = 1011 )(生成多项式:( x^3 + x + 1 ))
  • 余数 ( R(x) = 110 ) → 发送码:1001110

接收方校验过程:
若接受到的消息为 1000110 1000110 1000110,用该数除以 G ( x ) G(x) G(x)(除法规则与上述相同),得到余数为 000 000 000,说明接受到的消息正确✔。
请添加图片描述

若接收到的信息为: 1001110 1001110 1001110,用该数除以 G ( x ) G(x) G(x)(除法规则与上述相同),得到余数为 011 011 011,余数不为0,说明接受到的消息错误❌。
请添加图片描述

http://www.xdnf.cn/news/13280.html

相关文章:

  • ​​扩散模型调度器(Scheduler)
  • Linux系统编程-DAY12
  • 【第二十一章 SDIO接口(SDIO)】
  • Springboot度假村住宿服务平台95i1e(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • BUUCTF杂项MISC题解题思路(2)(不断更新)
  • Day50打卡 @浙大疏锦行
  • CppCon 2015 学习:Implementing class properties effectively
  • 维度建模是什么意思?如何实现维度建模?
  • Postgresql数据库初体验
  • 全连接网络
  • java常量池和字符串常量池
  • 24-Oracle 23 ai ​Lock-Free Reservations​(无锁列值保留)
  • Vue3通过自定义指令实现数字滚动动画效果
  • 《Playwright:微软的自动化测试工具详解》
  • 联邦学习聚合参数操作详解
  • 关于个性化头像框设计的分享与服务说明
  • cv::Range的用法
  • AI时代的“数据之困”,什么是AI-Ready Data
  • 介绍一种直流过压保护电路
  • 蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
  • AUTOSAR图解==>AUTOSAR_TR_SWCModelingGuide
  • 【Java工程师面试全攻略】Day7:分布式系统设计面试精要
  • C++ 类继承
  • 《驭码CodeRider 2.0深度体验:AI驱动研发全流程革新,开发效率飙升300%!》
  • 实现建筑互联互通目标,楼宇自控系统在设备管理中作用凸显
  • 如何通过DNS解析实现负载均衡?有哪些优势?
  • DICOM批量修改工具
  • Pytest断言全解析:掌握测试验证的核心艺术
  • 15、企业固定资产(FA)全流程解析:从资产购置到资产处置
  • 产品经理入门到精通:01需求调研