冗余码

CRC和海明校验类似,也是有效信息(k位)+校验信息(r位),需要满足N=k+r≤2r-1

生成多项式G(X)

定义:收发双方约定的一个(r+1)位二进制数,发送方利用G(X)对信息多项式做模2除运算,生成校验码。接收方利用G(X)对收到的编码多项式做模2除运算检测差错及错误定位。

满足条件:

  1. 最高位和最低位必须为1;
  2. 当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0;
  3. 不同位发生错误时,模2除运算后余数不同;
  4. 对不为0余数继续进行模2除运算应使余数循环。

得到生成多项式

从最高幂位开始降位,有就为1,没有就是0

例如:

G(x)多项式 G(x)
x3+x+1(x0) 1011
x3+x2 1100
x4+x2+1 10101

在利用G(X)对信息多项式做模2除运算时,运算原则(运算实际上就是异或运算)

  1. 部0分余数首位为1时,商为1,减除数;(余数开头为1,下一位接着除)
  2. 部分余数首位为0时,商为0,减0(余数开头为0,这位的商为0,下面减0)
  3. 当部分余数的位数小于除数的位数时,该余数即为最后余数。(结束运算条件)

通过一道例题来熟悉过程

将4位有效信息1001编成循环校验码,选择生成多项式x3+x1+x0,试写出编码过程

1.根据生成多项式,得到G(x)=1011

2.有效信息为4位,k=4,代入公式k+r≤2r-1,得到r≥3

3.首先临时在有效信息1001后面添加r位0的冗余码,即1001000,计算1001000/1011,得到余数110

4.将余数替换有效信息后面的冗余码,变为1001110

余数

出错位

(A7A6A5A4A3A2A1)

000
001 7
010 6
100 5
011 4
110 3
111 2
101 1

在传输数据时,若对传输过去的数据进行模二运算,得到余数不为0,则数据发生变化,我们通过余数对比表,可以得到哪一位发生的变化。

例如,如果我们传输数据得到的是1001111,我们除以G(x)

得到余数101,查表格也就是第一位出错。

循环冗余校验(CRC)的更多相关文章

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

    转自 http://blog.csdn.net/u012993936/article/details/45337069 一.CRC简介 先在此说明下什么是CRC:循环冗余码校验 英文名称为Cyclic ...

  2. CRC(Cyclic Redundancy Check)循环冗余校验码与海明码的计算题

    (17)采用CRC进行差错校验,生成多项式为G(X)=X4+X+1,信息码字为10111,则计算出的CRC校验码是  (17)  .A.0000  B.0100   C.0010   D.1100试题 ...

  3. 循环冗余校验(CRC)算法入门引导

    目录 写给嵌入式程序员的循环冗余校验CRC算法入门引导 前言 从奇偶校验说起 累加和校验 初识 CRC 算法 CRC算法的编程实现 前言 CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式.在嵌 ...

  4. 【转】循环冗余校验(CRC)算法入门引导

    原文地址:循环冗余校验(CRC)算法入门引导 参考地址:https://en.wikipedia.org/wiki/Computation_of_cyclic_redundancy_checks#Re ...

  5. ****** 三十 ******、软设笔记【计算机体系结构】-循环冗余校验码(CRC)

    循环冗余校验码(CRC)  广泛地在网络通信及磁盘存储时采用.  1.多项式  在循环冗余校验(CRC)码中,无一例外地要提到多项式的概念.一个二进制数可以以一个多项式来表示.如1011表示为多项式X ...

  6. Modbus库开发笔记之八:CRC循环冗余校验的研究与实现

    谈到Modbus通讯自然免不了循环冗余校验(CRC),特别是在标准的串行RTU链路上是必不可少的.不仅如此在其他开发中,也经常要用到CRC 算法对各种数据进行校验.这样一来,我们就需要研究一下这个循环 ...

  7. 【转】 CRC循环冗余校验码

    1.CRC CRC循环冗余校验码是数据通信中的一种查错校验码. 循环冗余检查对数据进行多项式计算,将计算结果附加在帧后面,接收数据的设备执行模2运算,保证数据传输的正确性和完整性. 2.模2除法 ①不 ...

  8. 写给嵌入式程序员的循环冗余校验(CRC)算法入门引导

    写给嵌入式程序员的循环冗余校验(CRC)算法入门引导 http://blog.csdn.net/liyuanbhu/article/details/7882789 前言 CRC校验(循环冗余校验)是数 ...

  9. 循环冗余校验(CRC)算法入门

    http://blog.csdn.net/liyuanbhu/article/details/7882789 前言 CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式.在嵌入式软件开发中,经常要 ...

  10. CRC循环冗余校验码

    原文转载自:https://blog.csdn.net/hm108106/article/details/73332465 1.CRC CRC循环冗余校验码是数据通信中的一种查错校验码. 循环冗余检查 ...

随机推荐

  1. OGG-01161

    Bad column index (35) specified for table user.table_name, max columns = 35. 原因:源端表结构发生了变更 解决办法:1.如果 ...

  2. tree 数状型结构显示目录下的内容

    1. 命令功能 tree中文意思“树”,以树形结构显示目录内容.. 2. 语法格式 tree  [option]   [directory] tree  选项   目录 3. 使用范例 当最小化安装l ...

  3. GDB学习笔记

    GDB是UNIX及UNIX-like下的调试工具.GDB这个调试工具相比于VC.z的优点是具有修复网络断点以及恢复链接等功能. 一.功能 一般来说,GDB主要帮助你完成下面四个方面的功能: 1.启动你 ...

  4. mysql数据同步到Elasticsearch

    1.版本介绍 Elasticsearch: https://www.elastic.co/products/elasticsearch 版本:2.4.0   Logstash: https://www ...

  5. [php代码审计] php四种标记

    php手册中的介绍: 可以在 PHP 中使用四对不同的开始和结束标记.其中两种,<?php ?> 和 <script language="php"> < ...

  6. 01.helloworld--标签

    """参考网站:http://python.cocos2d.org/doc/programming_guide/index.html""" ...

  7. 神仙dcx出的一道题

    题目大意 \(\;\;\)在一个坐标系上, 以\((0, 0)\)为起点, 每走一步,可以从\((x,y)\)走到\((x+1,y),(x-1,y),(x,y+1),(x,y-1)\)中的一个点上, ...

  8. LeetCode--050--Pow(x,n)

    实现 pow(x, n) ,即计算 x 的 n 次幂函数. 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, 3 输出: 9.26100 ...

  9. Oracle分组函数之Grouping Sets

    功能介绍: 自定义分组的字段 创建表: 插入测试数据: Grouping Sets(null,t.classid,(t.classid,t.studentname)),类似于ROLLUP Select ...

  10. Crazy Binary String

    Crazy Binary String 最长01个数相等的子串和子序列 字串用二分做的,有hack数据 :8 00111100 好像数据太水,直接放过去了 下面为二分代码 #include<bi ...