循环冗余校验(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循环冗余校验码是数据通信中的一种查错校验码. 循环冗余检查 ...
随机推荐
- OGG-01161
Bad column index (35) specified for table user.table_name, max columns = 35. 原因:源端表结构发生了变更 解决办法:1.如果 ...
- tree 数状型结构显示目录下的内容
1. 命令功能 tree中文意思“树”,以树形结构显示目录内容.. 2. 语法格式 tree [option] [directory] tree 选项 目录 3. 使用范例 当最小化安装l ...
- GDB学习笔记
GDB是UNIX及UNIX-like下的调试工具.GDB这个调试工具相比于VC.z的优点是具有修复网络断点以及恢复链接等功能. 一.功能 一般来说,GDB主要帮助你完成下面四个方面的功能: 1.启动你 ...
- mysql数据同步到Elasticsearch
1.版本介绍 Elasticsearch: https://www.elastic.co/products/elasticsearch 版本:2.4.0 Logstash: https://www ...
- [php代码审计] php四种标记
php手册中的介绍: 可以在 PHP 中使用四对不同的开始和结束标记.其中两种,<?php ?> 和 <script language="php"> < ...
- 01.helloworld--标签
"""参考网站:http://python.cocos2d.org/doc/programming_guide/index.html""" ...
- 神仙dcx出的一道题
题目大意 \(\;\;\)在一个坐标系上, 以\((0, 0)\)为起点, 每走一步,可以从\((x,y)\)走到\((x+1,y),(x-1,y),(x,y+1),(x,y-1)\)中的一个点上, ...
- LeetCode--050--Pow(x,n)
实现 pow(x, n) ,即计算 x 的 n 次幂函数. 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, 3 输出: 9.26100 ...
- Oracle分组函数之Grouping Sets
功能介绍: 自定义分组的字段 创建表: 插入测试数据: Grouping Sets(null,t.classid,(t.classid,t.studentname)),类似于ROLLUP Select ...
- Crazy Binary String
Crazy Binary String 最长01个数相等的子串和子序列 字串用二分做的,有hack数据 :8 00111100 好像数据太水,直接放过去了 下面为二分代码 #include<bi ...