循环冗余校验码

视频链接地址:
https://www.bilibili.com/video/BV1BE411D7ii?from=search&seid=6420326887479343502

计算机组成原理 系列文章目录

  • 循环冗余校验码
  • 前言
  • 1 循环冗余校验码
    • 1.1 基本思想
    • 1.2 构造方法
    • 1.3 纠错检错
  • 2 小结

前言

在本篇中,你将掌握

  • 循环冗余校验码的基本思想和构造方法

1 循环冗余校验码

1.1 基本思想

循环冗余校验码的思想:数据发送、接收方约定一个“除数”(二进制的除数)

K个信息码 + R位校验码作为“被除数”,在检验时,判断余数是否为0来判断是否出错。

让我们来看个例子,如下图,已知生成多项式G(x),信息码为101001,求对应的CRC码。

二进制的除法规则,如上图所示,其相除过程为首先判断被除数当前最高位是否为1,若为1,则当前商为1,否则为0;然后对被除数和除数做“模2减”,即异或;之后,在“模2减”后若位数不足在最高位补0,重复首先的步骤,直至最后得到商和余数。
对于余数,余数的位数 = 除数的位数-1 = 校验码的位数。

1.2 构造方法

解法步骤

  1. 确定K、R以及生成多项式对应的二进制码
    K = 信息码长度 = 6,R = 生成多项式最高次幂 = 3 则校验码位数为 N = K+R = 9
    生成多项式G对应的二进制码为1101,对应x次幂的系数
  2. 移位
    信息码左移R位,低位补0(即在信息码后补R个校验位的0)
  3. 相除
    对移位后的信息码,用生成多项式进行模2除法,产生余数
    对应的CRC码:101001 001
    (相除过程见上图,其模2除法的余数 001 就是校验位)
  4. 检错和纠错
    发送方发送的数据为101001001记为C9C8C7C6C5C4C3C2C1C_9C_8C_7C_6C_5C_4C_3C_2C_1C9​C8​C7​C6​C5​C4​C3​C2​C1​

接收方对接收的数据用约定好的1101进行模2除,若余数为000,代表没有出错;若余数为010,代表C2C_2C2​或C9C_9C9​出错,其余数和出错位对应关系如下图

1.3 纠错检错

注意在上表中,出错位为1和8、2和9的余数两两相同,那么我们能推知循环冗余校验码只有检错的能力,而没有纠错的能力么?
 也不全对,因为在上述例子中,余数只有3位二进制码,只能表示8-1=7种(000表示没出错)出错位,但传输的位数为9位,故无法纠错。

对于确定的生成多项式,出错位与余数是相对应的

如果出错的位数并没超过余数所能表示的范围,则余数和出错位之间就是一一对应的关系

K个信息位,R个校验位,若生成多项式选择得当,且2R>=K+R+12_R>=K+R+12R​>=K+R+1则CRC码可以纠错

2 小结


本篇重点:
(1)循环冗余校验码的构造方法,如何通过给出的K个信息位和最高次为R的生成式构造循环冗余校验码(K个信息位 + R个校验位(余数));
(2)循环冗余校验码的校验方法:通过与生成式模2除,得到R的余数,若为000则没错,否则出错,且有可能纠错

本篇也是计算机网络的重点,需要熟练掌握CRC的计算构造方法。

循环冗余校验码(计算机组成原理12)相关推荐

  1. 第二章 数据的表示和运算 2.1.6 循环冗余校验码/CRC码 [计算机组成原理笔记]

    第二章 数据的表示和运算 2.1.6 循环冗余校验码/CRC码 本笔记参考书目: 计算机组成原理(第六版.立体化教材)白中英.戴志涛 2021王道计算机组成原理视频公开课 本节重点: 循环冗余校验码/ ...

  2. 计算机组成原理:循环冗余校验码CRC具备“一位纠错”功能的思考与探索

    笔者在阅读华中科技大学谭志虎老师主编的<计算机组成原理(微课版)>教材进行复习时,产生了一个疑问,并针对性地进行了一些思考.欢迎广大复习到这里同样有问题的同学(寒假开学接着考试实在有点汗, ...

  3. 计算机组成原理学习笔记:循环冗余校验码

    循环冗余校验码 CRC 码 循环冗余校验码 (cyclic redundancy Check, CRC) 十进制除法 从熟悉的十进制出发,假设现在你要给另一个人传送882这样的一个10进制数据,为了防 ...

  4. 软件考试—计算机组成原理—奇偶校验码、海明码、循环冗余校验码

    目录 1,奇偶校验码 2,海明码 3,循环冗余校验码 码距:是指一个编码系统中任意两个合法编码之间至少有多少个二进制位不同. 利用奇偶校验码来查错的编码系统的合法编码之间的最小码距为2. 奇偶校验码: ...

  5. 计算机底层:循环冗余校验码CRC

    计算机底层:循环冗余校验码CRC 信息位+校验位组成循环冗余校验码,也称CRC码. 循环冗余校验码的思想:         通过将信息进行除以某个规定的数,这个数是提前约定好的,并且两边都知道的数. ...

  6. 循环冗余校验码CRC,求解步骤

    循环冗余校验码CRC,是软考-计算机组成原理 中一种重要的编码. 下面只是简要描述求解CRC码的解题步骤,面向有一定理论基础的朋友. 直接看例题. 例.信息位: 10100110   生成多项式: 解 ...

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

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

  8. CRC冗余校验码源码代码c语言,循环冗余校验码(CRC)应用总结(包括C++源码)

    最近在实习期间需要用到数据的校验,所选为CRC16,那么就在此总结一番吧. 现在此说明下什么是CRC:循环冗余码校验 英文名称为Cyclical Redundancy Check,简称CRC,它是利用 ...

  9. CRC24循环冗余校验码的FPGA实现

    CRC即循环冗余校验码(Cyclic Redundancy Check[1] ):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据 ...

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

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

最新文章

  1. Tomcat 源码阅读记录(1)
  2. 机器学习入门学习笔记:(1)BP神经网络原理推导及程序实现
  3. package.json---入门说明
  4. mysql多表联合删除
  5. java获取异常堆栈详情
  6. 海上瓶子下有东西吗_《海上钢琴师》:宁愿一生孤独,不愿随波逐流。
  7. java提示需要标识符,java错误需要标识符
  8. mybatis date类型映射_Mybatis中类型映射处理器详解
  9. Bailian4112 情报破译-Cryptanalysis【密码】
  10. 吴昊品游戏核心算法 Round 18 —— 吴昊教你玩Zen Puzzle Garden
  11. 编码基本功:性能测试工具可用于检查死循环
  12. switchhost使用记录
  13. UE4 半透明材质粒子无法在透明背景前显示问题
  14. 解决JS中文乱码问题
  15. 计算机中丢失msvcr71.dll 问题解决
  16. 使用 ktra 搭建私人 Cargo registry
  17. 【2019-08-14】慢慢来,才叫快
  18. ThreadPoolExecutor的四种抛弃策略
  19. 盘点最常用的十款代码编辑器
  20. ubuntu下编写C语言程序

热门文章

  1. 马尔可夫链模型的信贷风险分析与预测
  2. 防拷贝U盘在软件开发行业的应用,软件怎样防复制防拷贝?
  3. Obsidan之数学公式的输入
  4. 3dMax 整体旋转与自转
  5. acm:C语言程序设计:求圆柱的体积等,去除小数点后两位最后一位的四舍五入
  6. 等保2.0三级安全要求
  7. 《罪恶街区/Vice Street》手游用户协议
  8. android布局置顶_android linearlayout imageview置顶摆放
  9. 怎么用Hypermesh划分球体网格
  10. 蒙古文输入法linux版,蒙古文输入法下载 德力海蒙古文输入法 V2.1.3 官方安装版(附使用手册) 下载-脚本之家...