海明码距离及检错纠错问题和CRC校验

摘要:
汉明距离与错误检测和纠正的关系:1。具有汉明距离d+1的码可以检测d位错误。例如,如果奇偶校验码,汉明距离为2,则可以检测到单个错误。用于纠正单个位错误的冗余位的下限,m是数据位,r是校验位≤2^r1。每个码字从左到右编号,最左边是第一位。2.校验位和数为2的幂的数据位是校验位,例如1、2、4、8、16。在汉明码纠错过程中,首先将错误计数器设置为“0”。当汉明码数据到达接收端时,接收端逐一检查每个校验位的奇偶性。
海明校验码

两个长度相等的字符串的海明距离是在相同位置上不同的字符的个数,也就是将一个字符串替换成另一个字符串需要的替换的次数。海明距离与检错和纠错的关系:

1.海明距离为d+1的编码能检测出d位差错。

因为在距离为d+1的检验码中,只改变d位的值,不可能产生另一个合法码。如奇偶校验码,海明距离为2,能查出单个错。

2.海明距离为2d+1的编码,能纠正d位差错。

因为此时,如果一个码字有d位发生差错,它仍然距离原来的码字距离最近,可以直接恢复为该码。

(奇偶校验码,海明距离为2,可以检出单个错)

纠正单比特错的冗余位下界,m为数据位数,r为校验位数  
         (m+R+1)≤2^r

1.每一个码字从左到右编号,最左边为第1位

2.校验位和数据位

  • 凡编号为2的乘幂的位是校验位,如1、2、4、8、16、……。
  • 其余是数据位,如3、5、6、7、9、……。
  • 3.每一个校验位设置根据:包括自己在内的一些位的集合的奇偶值(奇数或偶数)。

    海明码纠错过程(只纠错1位)

  • 首先将差错计数器置“0”。
  • 当海明码数据到达接收端后,接收端逐个检查各个校验位的奇偶性。
  • 如发现某一校验位和它所检测的集合的奇偶性不正确,就将该检验位的编号加到差错计数器中。
  • 待所有校验位核对完毕:
  • 若差错计数器仍为“0”值,则说明该码字接收无误。
  • 非“0”值,差错计数器的值为出错位的编号,将该位求反就可得到正确结果。
  •     循环冗余检错码CRC

    可以检测到所有长度小于等于r的突发错误

    广泛用于各种网络,几乎所有的局域网

    使用CRC编码时发送方和接收方必须预先商定一个生成多项式G(x),假设有一个m为的帧M(x),使用G(x)生成的帧的步骤如下:

  • 假设G(x)的阶为r, 那么M(x)在末尾添加r个0,得到 m+r位的位模式 。
  • 利用模2出发,用G(x)去除 ,得到对应的余数(总是小于等于r位)。
  • 利用 减去(模2减法)第2步中得到的余数,得到的位模式就是即将被传输的带校验和的帧
  •   

    小结:

    Sender

  • 在数据帧的低端加上r个零,对应多项式为XrM(x)
  • 采用模2除法,用G(x)去除XrM(x),得余数
  • 采用模2减法,用XrM(x)减去余数,得到带CRC校验和的帧
  •   

    Receiver

  • 用收到的幀去除以G(x)
  • 为零:无错误产生。非零:发生了错误,重传
  • 免责声明:文章转载自《海明码距离及检错纠错问题和CRC校验》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

    上篇建设DevOps统一运维监控平台,全面的系统监控 Zabbix VS Nagios VS Open-Falcon OR Prometheus如何使用jQuery向asp.net Mvc传递复杂json数据下篇

    宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

    相关文章

    验证MD5校验和

    2.1.3.1验证MD5校验和 下载完MySQL软件包后,应确保其MD5校验和与MySQL下载页面上提供的校验和匹配。每个程序包都有一个单独的校验和,您可以针对下载的程序包进行校验。每个MySQL产品的下载页面上都列出了正确的MD5校验和,您会将其与下载的文件(产品)的MD5校验和进行比较。 每个操作系统和设置都提供了自己的工具版本,用于检查MD5校验和。...

    【大话存储】学习笔记(4,5章),RAID

    RAID 上一章介绍了磁盘的基本原理,我们知道一块磁盘的容量和速度是有限的,对于一些应用来说,可能需要几个TB的大小的来存放数据,我们必须要制造更大单盘容量的磁盘吗?实际上,可以使用多块磁盘并行起来解决这个问题,这就是RAID技术。 RAID:独立的磁盘组成具有冗余特性的阵列。Redundant Array of Independent Disks n...

    element-ui的el-table和el-form嵌套使用表单校验

    表格中嵌套使用表单验证 表格是el-table自动获取的后台数据,每行都有el-input的验证,这样一个rules的规则就不能匹配到每一行,所以要是用动态的prop和rules规则 需求如下,要对告警阈值进行验证 废话不多说,上代码 <el-form :model="paramsForm"...

    进制转换的学习

         我们计算机中采用的是二进制,因为二进制具有运算简单,易实现且可靠,为逻辑设计提供了有利于的途径,节省设备等优点,为了便于描述,又常用八、十六进制作为二进制缩写。一般计数都采用进位计数,有以下特点: (1)二进制:逢二进一        八进制:逢把进一        十六进制:逢十六进一 (2)数制转换        十进制:有十个基数:0 1...

    TCP帧

    说一下UDP ( 首先是伪首部:伪首部是计算检验和时临时添加在UDP用户数据报前面伪首部(pseudo header),通常有TCP伪首部和UDP伪首部。在UDP/TCP伪首部中,包含32位源IP地址,32位目的IP地址,8位填充0,8位协议,16位TCP/UDP长度。通过伪首部的校验,UDP可以确定该数据报是不是发给本机的,通过首部协议字段,UDP可以确...

    CRC32

    packageorg.samuel.util; /*** @authoryangfeng * */ public classCRC32 { static final int crc_c[] ={ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076...