1.CRC简介

CRC循环冗余校验码是数据通信中的一种查错校验码。

2.CRC原理

CRC 算法的基本思想是将传输的数据[M(X)] 当做一个位数很长的数。将这个数除以另一个数[G(X)] ,得到的余数[R(X)] 作为校验数据附加到原数据后面,组成循环校验码。

M(X)代表待编码的有效信息
G(X)代表约定好的多项式
R(X)代表代表检验位

由于,CRC的结构 = 信息位(N位) + 校验位(K位)

所以,CRC编码 = M(X) + R(X)

3.CRC编码方法

  • 把待编码的N位有效信息位表示为多项式M(X)

  • 把M(X)左移K位,得到M(X)*X^K,这样就空出了K位,以便拼接K位余数,这里的K位是由多项式G(X)的最高位决定的

  • 选取一个生成多项式G(x),对M(X)*X^K模二除 (多项式G(X)一般会直接给你,模二除看下面例子,实质是异或运算),以下是运算公式

    ( M(X) * X^K ) / G(X) = Q(X) + R(X) / G(X)

    这里的Q(X)是商,它本身不重要,这里最重要的是求出余数R(X)

  • 将信息位M(X)与余数R(X)拼接起来,构成CRC循环冗余校验码

    CRC编码 = M(X) + R(X)

4.举个栗子

题目:选择产生多项式位1011,把4位有效信息1100编成CRC码

  • M(X) = X^3 + X^2 = 1100

  • M(X) * X^3 = X^6 + X^5 = 1100000 (这里多项式最高位位3,左移3位

  • G(X) = X^3 +X +1 = 1011

  • ( M(X) * X^K ) / G(X) = 1100000 / 1011 = 1110 + 010 / 1011 (关键,这里进行模二运算,实质上是异或运算,求R(X))
    经运算,此时确定R(X)为 010

  • 此时得出CRC编码 = M(X) + R(X) = 1100010

5.CRC编码的校验

校验原理:将得到的CRC码用约定的G(X)去除,余数为0,结果正确 ,某一位出错,则余数不为0

纠错的话,与G(X)的选择有关系,这方面比较深,考研大纲不考察纠错这块的知识点

CRC循环冗余校验码原理解析(附实例)相关推荐

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

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

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

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

  3. 16位CRC循环冗余校验码生成函数

    16位的CRC校验码生成,可使用以下函数: //16位CRC校验码生成 //返回值:CRC校验码 unsigned int CRC_check(unsigned char *addr,int num) ...

  4. 循环冗余校验码CRC原理和实例

    今天同事问了一个CRC(循环冗余校验码)的问题,好奇心之下学习了一下. 首先说它的原理,百度百科上也有,我就简单说一下,它其实就是采用多项式编码的方法,对于要发送的信息码R,发送方和接收方约定好多项式 ...

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

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

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

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

  7. 计算机系统基础知识——循环冗余校验码(CRC)

    前言:循环冗余校验码(cyclie redundancy check)简称CRC(循环码),是一种能力相当强的检错.纠错码,并且实现编码和检码的电路比较简单,常用于串行传送(二进制位串沿一条信号线逐位 ...

  8. CRC循环冗余校验检错的原理

    比起奇偶校验码(PCC)只能校验一位错误,循环冗余校验码(CRC)的检错能力更强,可以检出多位错误. 1.CRC校验原理 CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形 ...

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

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

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

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

最新文章

  1. python 舍去小数_零基础小白Python入门必看——编程基础概念
  2. Handler延迟事件使用
  3. 在HTML网页中使用ActiveX控件
  4. Linux ping命令、Linux kill命令、Linux logname命令、 Linux logout命令
  5. Linux的shell编程
  6. group by用法 mysql_MYSQL GROUP BY用法详解
  7. Springboot+Vue+EasyExcel实现web页面的excel读取
  8. 网页设计期末复习 选择+简答+大题
  9. 爬虫实战——QQ空间自动点赞!这个脚本值三千五你信吗?
  10. 再战高端智能电动化,错失先机的长安能靠华为“翻盘”?
  11. 新手练字又快又好的方法
  12. 开源网络负载测试工具测评
  13. 名帖329 王羲之 草书《游目帖》
  14. Android开发最佳实践
  15. 鲁宾逊的数学功绩何在?
  16. 显示硬件发展与视频开发系列(6)----显示标注与视频处理单元(1):显示标准
  17. 如何利用在vue中echart 生成全国、省、市地图
  18. 计算机网络Wireshark实验-棋歌教学网
  19. js 时间戳转换成正确的时间格式(本地时间早八小时问题解决)
  20. java IO流(一)文件, InputStream,OutputStream,Reader,Writer

热门文章

  1. 【彩票】彩票预测算法(一):离散型马尔可夫链模型C#实现
  2. plc原理及应用_【工控资料】西门子、三菱、欧姆龙PLC电气设计与编程自学宝典(双色版)...
  3. Python图像处理之图片文字识别(OCR)
  4. 3ds max 旋转及角度
  5. ROS 位置姿态Odometry仿真模拟(gmapping)
  6. python 矩阵对应元素相乘,python 矩阵对应元素相乘_Numpy——numpy的基本运算
  7. 人工智能/机器学习/深度学习 经典必看书籍【附百度网盘链接】
  8. 高职计算机网络基础说课,《计算机网络》说课课件.ppt
  9. 基于matlab的天线方向图
  10. 椭球面上的几种曲率半径