循环冗余校验码(CRC)

循环冗余校验码(Cyclic Redundancy Check,CRC) CRC是一种基于多项式运算的高效错误检测编码方法。通过选择合适的生成多项式,CRC能够以较低的计算和传输开销,实现对数据的有效错误检测。理解CRC的技术原理有助于在实际应用中正确地实现和使用CRC算法,确保数据通信和存储的可靠性。模 2 运算是二进制中的一种运算规则,主要使用异或(XOR)操作代替加法和减法,且没有进位。模 2 乘法是普通的二进制乘法,没有进位或更高的数位。模 2 运算特别适合应用于数字通信中的错误检测、编码理论等领域,因为它能有效简化二进制数据的处理。 阅读详情

循环冗余校验码(CRC)
  
循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。
校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2R,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2R除以生成多项式G(x)得到的余数就是校验码。
几个基本概念
1、多项式与二进制数码
多项式和二进制数有直接对应关系:x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:x的最高幂次为R,转换成对应的二进制数有R+1位。
多项式包括生成多项式G(x)和信息多项式C(x)。
如生成多项式为G(x)=x4+x3+x+1, 可转换为二进制数码11011。
而发送信息位 1111,可转换为数据多项式为C(x)=x3+x2+x+1。
2、生成多项式
是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。
在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。
应满足以下条件:
a、生成多项式的最高位和最低位必须为1。
b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做模2除后应该使余数不为0。
c、不同位发生错误时,应该使余数不同。
d、对余数继续做模2除,应使余数循环。
将这些要求反映为数学关系是比较复杂的。但可以从有关资料查到常用的对应于不同码制的生成多项式如图9所示:
N K 码距d G(x)多项式 G(x)
7 4 3 x3+x+1 1011
7 4 3 x3+x2+1 1101
7 3 4 x4+x3+x2+1 11101
7 3 4 x4+x2+x+1 10111
15 11 3 x4+x+1 10011
15 7 5 x8+x7+x6+x4+1 111010001
31 26 3 x5+x2+1 100101
31 21 5 x10+x9+x8+x6+x5+x3+1 11101101001
63 57 3 x6+x+1 1000011搜索
63 51 5 x12+x10+x5+x4+x2+1 1010000110101
1041 1024   x16+x15+x2+1 11000000000000101
图9 常用的生成多项式
3、模2除(按位除)
模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。所以实际上就是异或。然后再移位移位做下一位的模2减。步骤如下:
a、用除数对被除数最高几位做模2减,没有借位。
b、除数右移一位,若余数最高位为1,商为1,并对余数做模2减。若余数最高位为0,商为0,除数继续右移一位。
c、一直做到余数的位数小于除数时,该余数就是最终余数。

CRC循环冗余校验码计算 生成多项式:G(X) = x^3 + x + 1。要发送的数据:111000110。被除数:111000110。 阅读详情

相关推荐

检错纠错码(奇偶校验码 CRC循环冗余校验码 海明码)

奇偶校验码 CRC循环冗余校验码 海明码

Little_ant_的博客 1万+

详述循环冗余校验CRC(C代码)

本内容包括循环校验码 CRC(Cyclic Redundancy Checksum) 及其生成原理介绍,CRC-16 校验码的使用与其校验码计算方法,汽车 CAN CRC 的介绍,含有工程实际使用代码。

让你爱上电路设计 3万+

循环冗余校验码原理及例题

在串行传送(磁盘、通讯)中,广泛采用循环冗余校验码(CRC)。CRC也是给信息码加上几位校验码,以增加整个编码系统的码距和查错纠错能力。 本文介绍了循环冗余校验码的基本原理,内含例题。

【计算机网络】循环冗余校验:Cyclic Redundancy Check

循环冗余校验(英语:Cyclic redundancy check,通称 CRC)是一种根据网上数据包或计算机文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。

有道无术, 术尚可求。有术无道, 止于术。 2251

LaTex的下载与安装(2024小白+windows系统)

本文主要介绍了Latex的下载与安装,还包括安装过程中遇到的小问题的解决。

m0_53096519的博客 2万+

Unity Shader变体优化实战:从内存削减到打包加速

本文深入探讨了Unity项目中Shader变体数量爆炸导致的打包缓慢、内存占用过高及包体臃肿等问题。核心解决方案是通过精准的Shader变体裁剪,即收集项目实际用到的变体形成“白名单”,并利用IPreprocessShaders接口在打包时剔除无用变体。实战表明,该方法能显著提升打包速度并大幅降低运行时内存。

weixin_29300241的博客 217

循环冗余检验 (CRC) 算法原理

    Cyclic Redundancy Check循环冗余检验,是基于数据计算一组效验码,用于核对数据传输过程中是否被更改或传输错误。 算法原理     假设数据传输过程中需要发送15位的二进制信息g=101001110100001,这串二进制码可表示为代数多项式g(x) = x^14 + x^12 + x^9 + x^8 + x^7 + x^5 + 1,其中g中第k位的值,对应g(x

myfaith2的专栏 1万+

【3】Ubuntu18.04下载与安装,以及中文输入法的安装

Ubuntu18.04下载与安装一、下载二、安装(在VMware 16 pro中安装Ubuntu18.04)三、Ubuntu中安装中文输入法1.检查 fcitx 框架2.安装输入法 一、下载 下载地址:Ubuntu Releases 往下拉,找到自己需要的安装版本(建议不要安装最新版,因为你在使用时候遇到的错误大多都是以前版本的,最新版本的,解决方案特别少) 我这里安装的是Ubuntu18.04 一般都是使用desktop版本的(desktop版和server版本的区别:请看这篇文章) 之后点击下载即

斯基的朦胧 1万+

CRC原理与实现

CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验。它是一类重要的线性分组码,编码和解码方法简单,检错和纠错能力强,在通信领域广泛地用于实现差错控制。实际上,除数据通信外,CRC在其它很多领域也是大有用武之地的。例如我们读软盘上的文件,以及解压一个ZIP文件时,偶尔会碰到“Bad CRC”错误,由此它在数据存储方面的应用可略见一斑。差错控制理论是在代数理论基础

快乐就好 1959

01-嵌入式入门-如何看原理图

最近由于找到的工作是偏于嵌入式方向,因此又重新开始学习已经丢弃两年的知识。新手学习知识感觉有一个通病:喜欢收集各种各样的视频、资料,网盘里收藏一大堆,但是却从没有打开看过,到头来还是个小白,只听说过几个概念,而实际却是不知所云,这就是所谓的"学习综合征"。而我也是其中的一员,最近痛定思痛,就准备根据一套资料沉下心学习下去,不再进入收集资料的大军。...

weixin_34010566的博客 4487

kettle写doris操作

文件在目录:doris-master\extension\kettle\assemblies\plugin\target\doris-stream-loader-plugins-9.4.0.0-343.zip。官方提供了doris stream load插件,下载源码编译后放到kettle的插件目录即可使用。地址:https://github.com/apache/doris.git。注意:需要doris插件或者kettle转换生成模板的私聊博主。使用PDmaner同步业务库生成建表语句。

weixin_44449054的博客 3031

循环冗余校验码(CRC)详解

书面解释 循环冗余校验码(CRC)广泛应用于数据通信领域和磁介质存储系统中。它利用生成多项式为k个数据未产生r个校验位来进行编码,其编码长度为k+r。由此可知,循环冗余校验码是由两部分组成的,左边为信息码(数据),右边为校验码。若信息码占k位,则校验码占n-k位。其中,n为CRC码的字长,所以CRC码又称为(n,k)码。校验码是由信息产生的,校验码位数越长,该代码的校验能力就越强。在求CRC编码时,采用的是模2运算。模2运算加减运算的规则是按位运算,不发生借位和进位。 通俗来讲,就是信息在编码的时候,在信息

InterestAndFun的博客 2万+

orangepi 5 plus ubuntu24.04上安装redroid

OrangePi 5 Plus运行reDroid云手机方案总结 在RK3588+Ubuntu 24.04上部署reDroid(Android容器化方案)的关键步骤: 内核要求:确保启用binderfs(无需ashmem,新版reDroid使用memfd替代); 安装流程: 安装Docker并配置代理加速镜像拉取; 拉取reDroid镜像(推荐Android 12/13 ARM64版本); 通过挂载binderfs启动容器,指定分辨率与DPI参数; 多实例管理: 脚本化创建多个容器(如8个实例),分配独立端口

babytiger的专栏 2294

校验码——CRC循环冗余校验码,码距,例题

相关文章: 校验码——码距 校验码——海明码及码距 校验码——CRC循环冗余校验码 一、循环冗余校验码 在串行传送(磁盘、通讯)中,广泛采用循环冗余校验码(CRC)。CRC也是给信息码加上几位校验码,以增加整个编码系统的码距和查错纠错能力。 CRC的理论很复杂,一般书上只介绍已有生成多项式后计算校验码的方法。检错能力与生成多项式有关,只能根据书上的结论死记。 循环冗余校验码(CRC)的基本原理是:在...

Ujiggg的博客 2万+

VCS的增量和分离编译

vcs的增量和分离编译

yunduor909的博客 3303

基于学术研究于NASA官网GPM卫星数据下载详细教程

基于学术研究于NASA官网GPM卫星数据下载详细教程

珞瑜的博客 8656

CRC循环冗余校验码

1、CRC CRC循环冗余校验码是数据通信中的一种查错校验码。 循环冗余检查对数据进行多项式计算,将计算结果附加在帧后面,接收数据的设备执行模2运算,保证数据传输的正确性和完整性。 2.模2除法 ①不向上借位,只要除数和被除数的位数相同就可进行计算,不比较它们的大小; ②模2运算中用到了模2减法,与逻辑异或相似: 1-1=0, 1-0=1, 0-1

hm108106的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

如何计算CRC校验码(循环冗余检验码)

1、什么是CRC校验      在数据通信领域,CRC(循环冗余检验码)常用的一种查错校验码,它的信息字段和校验字段的长度可以任意选定。它主要是通过对要传输的数据进行多项式计算,然后将得到的结果附在数据帧的后面在进行传输,在收方收到数据帧后就可以利用CRC码对数据进行检查,那样就可以实现对数据的检错功能。他的实现原理如下: (N,K)码就是在K位的信息码后面加上R位的监督码

iotdog的博客 6万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

1.CRC简介 CRC循环冗余校验码是数据通信中的一种查错校验码。 2.CRC原理 CRC 算法的基本思想是将传输的数据[M(X)] 当做一个位数很长的数。将这个数除以另一个数[G(X)] ,得到的余数[R(X)] 作为校验数据附加到原数据后面,组成循环校验码。 M(X)代表待编码的有效信息 G(X)代表约定好的多项式 R(X)代表代表检验位 由于,CRC的结构 = 信息位(N位) + 校验位...

huoji555的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

循环冗余校验码(CRC码)

循环冗余校验码(CRC码) 循环冗余校验码的思想: 数据发送、接受方约定一个“除数” K个信息位+R个校验位作为“被除数”,添加校验位后需保证除法的余数为0。收到数据后,进行除法检查余数是否为0,若余数非0说明出错,则进行重传或纠错。 例.设生成多项式为G(x)=x3x^3x3+x2x^2x2+1,信息码为101001,求对应CRC码。 1.确定K、R以及生成多项式对应的二进制码 K=信息码的长度=6,R=生成多项式最高次幂=3——>校验码位数N=K+R=9 生成多项式G(x)=1*x3x^3x

DTRblank的博客 1万+

crc循环冗余校验码c语言,CRC循环冗余校验码的生成

众所周知,不可能有永远都不会出错的人,同样也不可能有永远不出错的计算机,永远不出错的数据。人有知错能改的觉悟,计算机也有,不过计算机没有人类聪明,只能通过一个特定的方法进行自我改正,这就是校验码存在的必要了。一般用得比较多的校验码有奇偶校验码,CRC循环冗余校验码,海明校验码等。这里只介绍用的最多的CRC循环冗余校验码。何为校验码校验码是通过一种计算方法,发出端在原始数据的尾部添加若干数据;然后接...

weixin_42317115的博客 1488

【校验码】奇偶校验码、循环冗余校验码CRC、海明校验码

用通俗+专业用语举例介绍奇偶校验码、循环冗余校验码CRC、海明校验码,让你秒懂校验码

懂亿点的博客 9712

【校验码 - 循环冗余校验码CRC】

循环冗余校验码CRC的计算

阿年的博客 1411

循环冗余校验码CRC

CRC:循环冗余校验码 CRC是数据通信领域中最常用的一种差错校验码,其特征信息是信息字段和校验字段的长度可以任意选定。CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。

ValDC_Morning的博客 1254

差错控制:循环冗余校验码(CRC)的使用方法

循环冗余校验码(CRC)的应用

2301_80621565的博客 2323
上一篇: Excel VBA 单元格格式
下一篇: 3Dmax 波浪花瓶
hack_tian
博客等级 码龄16年 38粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值