循环冗余校验(CRC)
冗余码
CRC和海明校验类似,也是有效信息(k位)+校验信息(r位),需要满足N=k+r≤2r-1
生成多项式G(X)
定义:收发双方约定的一个(r+1)位二进制数,发送方利用G(X)对信息多项式做模2除运算,生成校验码。接收方利用G(X)对收到的编码多项式做模2除运算检测差错及错误定位。
满足条件:
- 最高位和最低位必须为1;
- 当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0;
- 不同位发生错误时,模2除运算后余数不同;
- 对不为0余数继续进行模2除运算应使余数循环。
得到生成多项式
从最高幂位开始降位,有就为1,没有就是0
例如:
G(x)多项式 | G(x) |
x3+x+1(x0) | 1011 |
x3+x2 | 1100 |
x4+x2+1 | 10101 |
在利用G(X)对信息多项式做模2除运算时,运算原则(运算实际上就是异或运算)
- 部0分余数首位为1时,商为1,减除数;(余数开头为1,下一位接着除)
- 部分余数首位为0时,商为0,减0(余数开头为0,这位的商为0,下面减0)
- 当部分余数的位数小于除数的位数时,该余数即为最后余数。(结束运算条件)
通过一道例题来熟悉过程
将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)的更多相关文章
- CRC循环冗余校验码总结(转)
转自 http://blog.csdn.net/u012993936/article/details/45337069 一.CRC简介 先在此说明下什么是CRC:循环冗余码校验 英文名称为Cyclic ...
- CRC(Cyclic Redundancy Check)循环冗余校验码与海明码的计算题
(17)采用CRC进行差错校验,生成多项式为G(X)=X4+X+1,信息码字为10111,则计算出的CRC校验码是 (17) .A.0000 B.0100 C.0010 D.1100试题 ...
- 循环冗余校验(CRC)算法入门引导
目录 写给嵌入式程序员的循环冗余校验CRC算法入门引导 前言 从奇偶校验说起 累加和校验 初识 CRC 算法 CRC算法的编程实现 前言 CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式.在嵌 ...
- 【转】循环冗余校验(CRC)算法入门引导
原文地址:循环冗余校验(CRC)算法入门引导 参考地址:https://en.wikipedia.org/wiki/Computation_of_cyclic_redundancy_checks#Re ...
- ****** 三十 ******、软设笔记【计算机体系结构】-循环冗余校验码(CRC)
循环冗余校验码(CRC) 广泛地在网络通信及磁盘存储时采用. 1.多项式 在循环冗余校验(CRC)码中,无一例外地要提到多项式的概念.一个二进制数可以以一个多项式来表示.如1011表示为多项式X ...
- Modbus库开发笔记之八:CRC循环冗余校验的研究与实现
谈到Modbus通讯自然免不了循环冗余校验(CRC),特别是在标准的串行RTU链路上是必不可少的.不仅如此在其他开发中,也经常要用到CRC 算法对各种数据进行校验.这样一来,我们就需要研究一下这个循环 ...
- 【转】 CRC循环冗余校验码
1.CRC CRC循环冗余校验码是数据通信中的一种查错校验码. 循环冗余检查对数据进行多项式计算,将计算结果附加在帧后面,接收数据的设备执行模2运算,保证数据传输的正确性和完整性. 2.模2除法 ①不 ...
- 写给嵌入式程序员的循环冗余校验(CRC)算法入门引导
写给嵌入式程序员的循环冗余校验(CRC)算法入门引导 http://blog.csdn.net/liyuanbhu/article/details/7882789 前言 CRC校验(循环冗余校验)是数 ...
- 循环冗余校验(CRC)算法入门
http://blog.csdn.net/liyuanbhu/article/details/7882789 前言 CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式.在嵌入式软件开发中,经常要 ...
- CRC循环冗余校验码
原文转载自:https://blog.csdn.net/hm108106/article/details/73332465 1.CRC CRC循环冗余校验码是数据通信中的一种查错校验码. 循环冗余检查 ...
随机推荐
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) - D
题目链接:http://codeforces.com/contest/831/problem/D 题意:在一个一维坐标里,有n个人,k把钥匙(钥匙出现的位置不会重复并且对应位置只有一把钥匙),和一个终 ...
- 了解卷积神经网络如何使用TDA学习
在我之前的文章中,我讨论了如何对卷积神经网络(CNN)学习的权重进行拓扑数据分析,以便深入了解正在学习的内容以及如何学习它. 这项工作的重要性可归纳如下: 它使我们能够了解神经网络如何执行分类任务. ...
- django之模型类在视图中的应用
一:模型类直接从把前端表单传入的值,进行存储. @csrf_exempt def regist(request): if request.method == 'POST': form = UserFo ...
- uiautomator2 使用注意的地方
uiautomator2项目地址:https://github.com/openatx/uiautomator2#basic-api-usages 下面记录一些自己在使用过程中的坑,仅供参考 1.通过 ...
- xss盲打
什么是xss盲打? 简单来说,盲打就是在一切可能的地方尽可能多的提交xss语句,然后看哪一条会被执行,就能获取管理员的cooike.趁着没过期赶紧用了,这样就能直接管理员进后台.然后再上传一句话,大马 ...
- 【CF1243B2】Character Swap (Hard Version)【思维】
题意:给定两个字符串,问是否存在交换方案使得两个字符串相同,方案为交换次数小于等于2n,且每次只交换s1与s2中的一个字符 题解:考虑从前往后枚举,当第i位不同时,考虑找后边的第j位,若存在这样的第j ...
- 【HDOJ6614】AND Minimum Spanning Tree(签到)
题意:给定标号从1到n的n个点,链接两个点x,y的代价为x AND y,求最小生成树总代价与满足代价最小的前提下字典序最小的方案 n<=2e5 思路: #include<bits/stdc ...
- (3)狄泰软件学院C++课程学习剖析一
深度剖析C++第一部分 1.类是一种模型,这种模型可以创建出一个对应的实体.有了类不一定有对应的实体,但是一个实体必定属于某一个类. 2.类用于抽象的描述 一类事物所持有的属性和行为:对象是具体的事物 ...
- SQL利用Case When Then Else End 多条件判断
Select Case When a is not null then a When b is not null then b When c is not null then c When d is ...
- Charles抓取https
步骤一:将Charles的根证书(Charles Root Certificates)安装到Mac上. Help -> SSL Proxying -> Install Charles Ro ...