概述


  • CRC 即 Cyclic Redundancy Check 的缩写
  • CRC 循环冗余校验属于检错码,只能检测出现了错误,但无法纠正错误。
  • 与CRC循环冗余校验类似的,还有奇/偶校验,但是 CRC 漏检率更低,因此在实际应用中更为重要

使用 CRC 校验数据流程

  • 首先需要发送方在原始数据的基础上,加上CRC校验码,组成新的发送数据
  • 然后接收方对收到的原始数据 + 校验码进行校验,判断数据在传输过程中是否出现错误

发送方对原始数据追加校验码

  • 假设原始数据是:101001
  • 生成待追加的校验码,需要使用一个生成多项式,G(x)(收发双方事先约定),例如 G(x) = x3 + x2 + 1
  • 构造被除数:原始数据 + 生成多项式最高次项个0,即:101001000
  • 除数:除数实际上就是生成多项式的系数,G(x) 展开得到: G(x) = 1 * x3 + 1 * x2 + 0 * x1 + 1 * x0,即 1101
  • 两数相除得余数,并进行补位(补到与生成多项式最高次项一致),即得到校验码。但是,这里的除法跟常规除法并不相同
  • 常规除法在上下两行数进行运算时,使用的是减法运算,而这里使用的是异或
  • 通过上述运算,得到校验码 001,添加到原始数据之后,得到的最终发送数据为 101001001

接收方对收到的数据进行校验

  • 继续接前文,假设收到的数据为 101001001
  • 接收方对该数据做除法,除数仍然是之前使用的多项式的系数 1101
  • 过程如下
  • 若余数为0,则表示未出错
  • 假设,接收方收到的数据出现了错误: 101101001,校验过程如下:
  • 余数不为0,则表示传输过程中出现了错误

结语


  • 计算CRC校验码时,用到的除法运算,内部使用的是异或运算而非减法运算

  • 计算出余数后,还要对其进行补位,才能得到最终使用的校验码

  • 在计算机网络中,数据链路层将数据封装成帧时,会在帧尾添加校验码,从而判断数据在传输过程中是否发生错误

  • 在实际使用CRC时,采用的生成多项式更为复杂,从而确保较低的漏检率

  • 另外,生成多项式的常数项必须是1

终于弄懂 CRC 循环冗余校验 辽相关推荐

  1. CRC循环冗余校验(计算机网络)

    CRC循环冗余校验 CRC差错检验的过程 提要 CRC的具体过程 例题详解 CRC差错检验的过程 提要  数据在链路层进行传输时,为了保证接收到的数据比特流是准确无误的,会采用CRC循环冗余校验的方式 ...

  2. CRC循环冗余校验是如何纠错的

    引言 昨天同学突然问我CRC循环冗余校验是如何纠错的?我突然大脑一片空白,学过校验码自然知道CRC循环冗余校验码是可以检错和纠错,但是仿佛只知道求出检验码和检错的过程,但是不知道如何纠错的过程,查询书 ...

  3. CRC循环冗余校验引起的二进制除法如何计算风暴

    文章目录 知道两个概念 模2和 模2减 两种不同的二进制除法 除法 模2除法 CRC 循环冗余校验 编码过程 差错检测能力 谈CRC循环冗余校验的之前,先把二进制除法说一下,先回忆一下十进制之间的除法 ...

  4. crc循环冗余校验 php,crc 循环冗余校验

    --- title: crc 循环冗余校验 date: 2018-09-26 updated: 2018-10-06 --- # crc 循环冗余校验 CRC(Cyclic Redundancy Ch ...

  5. 计算机考研英语一和英语二的区别,考研英语一和英语二的区别 今天终于弄懂了!...

    原标题:考研英语一和英语二的区别 今天终于弄懂了! 大家在最后三个月冲刺需要注意: 1.建议留几套真题,做考前模拟,精读真题可以用 <考研圣经>(英语二用)98-07 年的真题,都是逐词逐 ...

  6. CRC(循环冗余校验) BCC校验(异或校验) 温度换算 在线计算

    1,CRC(循环冗余校验)在线计算 2,BCC校验(异或校验)在线计算 3,温度换算 4,在线换算器

  7. 淘宝特价版拉新赚钱的页面怎么做?我终于弄懂了

    淘宝的同胞兄弟特价版,虽然长的朴实无华以至于经常被人问起淘宝特价版靠谱吗?2021年淘宝特价版可谓大火了一把,阿里巴巴不计成本的大力推广淘宝特价版,目的也非常明确要把拼多多占领的市场掠夺回来.最近还传 ...

  8. CRC循环冗余校验码总结

    一.CRC简介 先在此说明下什么是CRC:循环冗余码校验 英文名称为Cyclical Redundancy Check,简称CRC,它是利用除法及余数的原理来作错误侦测(Error Detecting ...

  9. CRC 循环冗余校验码 的计算方法

    循环冗余校验CRC(Cyclical Redundancy Check)字段位于尾部,有32位,有时称为IEEE/ANSI标准的CRC32.要使用一个n位CRC监测 数据传输错误,被检查的消息首先要追 ...

最新文章

  1. 将资源文件中的数据写回磁盘
  2. 网络游戏程序中解决加载卡顿的有效方法
  3. 服务器端使用jsp还是asp_快速了解 ASP.NET Core Blazor
  4. 修改linux开机画面
  5. JAVASCRIPT干了不下四五种工作
  6. ug添加imachining变量_UG用的不够快?是不是还没建标准库
  7. java netty post_API调用Netty长链接执行发送消息(在线数、用户列表)
  8. [转]工程师进阶之路(三)
  9. 在ASP.NET Core 3.1 MVC中集成Vue.js V4和使用Dropzone文件上传
  10. iOS开发之mac上搭建openfire服务器
  11. 在微信小程序中使用条形码生成器
  12. Verilog设计实例(1)线性反馈移位寄存器(LFSR)
  13. 书籍分享——《创新者的窘境》
  14. 雷达原理---线性调频信号的MATLAB仿真
  15. 经典!史上最全免费收录网站搜索引擎登录口
  16. 阿里云服务器Discuz论坛程序安装
  17. 网关 路由器 防火墙
  18. 多边形偏移算法c语言,多边形的偏移填充算法
  19. 3dmax 创建圆锥体1
  20. 世界杯优化算法及其Python实现

热门文章

  1. 计算机主机是什么系统吗,电脑RAM和ROM的区别是什么?RAM和ROM有哪些作用?
  2. WIN10下如何更改微信聊天记录的默认存储路径
  3. 无线网主域名服务器,主域名服务器和网关的关系
  4. vmware装的ubuntu的界面怎么全屏?
  5. python两个等于号是代表什么_python两个等于号是什么意思_等于号表示什么意思...
  6. IDEA(2018.2)的下载、安装及破解
  7. 《大学计算机基础》课程学习(1)——第1章 计算机基础知识
  8. js中的强制类型转换和进制数表达
  9. 吴军亲述编程生涯:不用低效率的算法做事情
  10. configure配置调试