题解校验码—CRC循环校验码与海明校验码

这篇具有很好参考价值的文章主要介绍了题解校验码—CRC循环校验码与海明校验码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

码距

一个编码系统的码距是任意两个码字的最小距离。

例如个编码系统采用三位长度的二进制编码,若该系统有四种编码分别为:000,011,100,111,此编码系统中000与111的码距为3;011与000的码距为2;011与111的码距为1,则该编码系统的码距为1。

码距计算方法:两个编码按位异或后1的个数。101异或100 = 001,1的个数为1,所以码距为1。

为了检测e个误码,最小码距d满足:d>=e+1;为了纠正t个误码,最小码距d满足:d>=2t+1

循环校验码

数据发送、接受方约定一个“除数”,在K个信息位后拼接R个校验位作为“被除数”,添加校验位后需保证除法的余数为0。收到数据后,进行除法检查余数是否为0,若余数非0说明出错,则进行重传或纠错。

例如:原始报文为"1100101",其生成多项式为"x4+x3+x+1",求CRC编码结果?

  1. K=原始报文长度=7,R=生成多项式最高次幂=4,“除数”为生成多项式对应二进制码11011
  2. 原始报文左移R位,低位补0,求得“被除数”(11001010000
  3. 做模2除法产生余数:1001
    题解校验码—CRC循环校验码与海明校验码
  4. 求得CRC编码为:11001011001

海明校验码

海明校验码是一种多重奇偶检错系统,求海明码时的一项基本考虑是确定所需最少的校验位数k。考虑长度为m位的信息,若附加了k 个校验位,则所发送的总长度为m+k。在接收器中要进行k个奇偶检查,每个检查结果或是真或是伪,k位的校验码可以用来确定误码的位置。m与k的关系:2k≥m+k+1

求信息1011的海明码?

  1. 根据公式2k≥4+k+1,有k=3,3位校验码从低到高需要放在20=1,21=2,22=4三个位置上,则信息位需要放在第3,5,6,7四个位置,记为M1,M2,M3,M4,如下表。
7 6 5 4 3 2 1 位数
M4=1 M3=0 M2=1 M1=1 信息位
k3 k2 k1 校验位
k1+k2+k3 k2+k3 k1+k3 k1+k3 校验位组
  1. 计算校验位组。7=20+21+22=1+2+4,表示第7位置的M4需要用1位置的k1、2位置的k2和4位置的k3进行校验,同理计算k1、k2、k3也与M4有关。依次计算M1到M4对应的校验位组,如上表。
  2. 求校验位的值,如下图所示:
    题解校验码—CRC循环校验码与海明校验码
  3. 将1-7位拼接为海明码:1010101

在接收方,也可以根据校验位对接收到的信息进行测试,例如收到1011101,如何校验?文章来源地址https://www.toymoban.com/news/detail-441300.html

  1. 根据前述流程提取出‘1011101’的信息位1011,校验位101
  2. 由信息位1011按步骤计算出校验位001
  3. 101异或001得出结果100(只有得出结果000说明传输无误)二进制100表示第4位置出错

到了这里,关于题解校验码—CRC循环校验码与海明校验码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32】CRC(循环冗余校验)

    (1)CRC(Cyclic Redundancy Check),循环冗余校验 (2) 什么是校验,为什么需要校验:数据传输,数据存储过程中需要使用到的 (3)什么是 冗余:表示比实际上要传输的数据还要多 (4)校验实现的关键: 冗余少、运算少、识错纠错能力强 (有些算法只能识别错误但是无法纠错) (1)(

    2024年02月03日
    浏览(39)
  • JAVA获取CRC(即循环冗余校验)

    前言:网上查了很多,CRC计算时,除数长度太长无法计算,所以写此文章。希望大家喜欢!     CRC(Cyclic Redundancy Check),即循环冗余校核,是一种根据网络数据包或电脑文件等数据产生简短固定位数 校核码 的快速算法。      CRC校验本质上是选取一个合适的 除数 ,要进行校

    2024年02月06日
    浏览(30)
  • 从原理到代码理解CRC循环冗余校验

    概述:本文详细介绍了CRC循环冗余计算的数学原理,算法中使用的参数说明,并以Modbus协议中的CRC-16算法为例,进行手算验证,同时提供LabVIEW和C语言的直接计算CRC-16 值的代码以及C的查表计算CRC-16代码和代码原理的说明。 初次接触CRC校验是因为项目需要上位机软件来记录P

    2024年02月04日
    浏览(31)
  • 【基础知识】CRC(循环冗余校验)直接计算和查表法

    校验是什么,个人理解就是经过一个算法,使用大量数据(几MB的数据)生成较小长度的一串信息(如16Bit),并切要做到 原数据不同时,生成的信息大概率不同(不是加密算法不考虑刻意造数据的情况) 原数据中任意一个或几个数据出现错误时,生成的信息不同(所有的原信

    2024年02月05日
    浏览(47)
  • CRC循环冗余校验 (Cyclic Redundancy Check) 原理/电路实现/Verilog实现

    目录 1 什么是CRC循环冗余校验? 2 CRC校验的原理 2.1 多项式表示 2.2 模二 多项式除法 2.3 传输端  2.4 接收端 3 CRC码的产生 3.1 产生CRC码步骤 3.2 Verilog实现 4 电路实现原理—线性反馈移位寄存器 4.1 循环移位寄存器结构 4.2 最大长度移位寄存器  4.3 多项式除法电路(线性反馈移位

    2024年02月04日
    浏览(28)
  • 计算机组成原理--基于Logisim的海明校验码解码电路实验的应用(超详细/设计/实验/作业/练习)

    掌握海明码检错纠错性能,能独立设计实现汉字 GB2312 编码的海明校验解码体系,并最终在实验环境中利用硬件电路实现对应的解码电路。 1.软件:Logisim软件、JAVA环境 2.硬件:计算机Windows 10 在 logisim 中打开实验资料包中的 data.circ 文件,在对应电路中完成海明校验解码电路

    2024年02月04日
    浏览(26)
  • C#: CRC8,CRC16,CRC32 校验代码

    说明:CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似

    2024年01月18日
    浏览(32)
  • (python)数据校验-CRC32校验

    目录 前言 数据校验概念 CRC校验算法 CRC计算原理 算法逻辑 流程图 CRC算法种类 代码实现CRC算法 python实现算法① python实现算法② 总结         在二次开发eCan上位机应用时,遇到了采用CRC(全称是循环冗余校验)32算法 校验文件传输完整性 的场景,浅浅地记录一下使用心得.  

    2023年04月16日
    浏览(29)
  • CRC校验码计算,以常用CRC-8为例

    CRC即循环冗余校验码 :是数据通信领域中最常用的一种查错校验码,其 特征是信息字段和校验字段的长度可以任意选定。 CRC校验原理 :在要发送的帧后面附加一个数,生成一个新帧发送给接收端。它要 使所生成的新帧能与发送端和接收端共同选定的某个特定数整除 (注意

    2023年04月14日
    浏览(26)
  • CRC校验(2):CRC32查表法详解、代码实现及CRC反转

    对于现在的CPU来说,基本上都在硬件上实现了CRC校验。但我们还是想用软件来实现一下CRC的代码,这样可以更深入地理解里面的原理。所以这一节就来详细地解释如何使用查表法从软件上来实现CRC-32的校验。另外,CRC还有一种反转的情况,实际上反转和不反转没有什么太大的

    2024年02月09日
    浏览(144)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包