汉明码是如何校验的,比如一道题:设数据为01101001,试采用4个校验位求其偶校验方式的汉明码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汉明码是如何校验的,比如一道题:设数据为01101001,试采用4个校验位求其偶校验方式的汉明码相关的知识,希望对你有一定的参考价值。

这个题目该如何做呢,有高手能解释下吗?详细点

参考技术A

将汉明码与校验位排入一个12位的字中,各位置的编号从1~12,那些二的幂次的位指定为校验位,校验位可用亦或操作符号计算


由此可知校验位是1010


手写加截图,且最近才学的,望采纳

汉明校验码

首先放个图,为汉明码中信息位N与校验位K的位数关系:
2^(K-1)>=N+K+1

码距:一个编码系统中任意两个合法编码(码字)之间不同的二进数位(bit)数叫这两个码字的码距,而整个编码系统中任意两个码字的的最小距离就是该编码系统的码距。
技术图片
以汉明校验码中的偶校验为例,若汉明码最高位号为m,最低位号为1,即有Hm、Hm-1、Hm-2···H2、H1。

一、
编码规则为:
⑴每个校验位Pi在汉明码中被分到位号2^(i-1)的位置上,其余各位为信息位。

⑵汉明码的每一位Hi有多个校验位校验,其关系式是被校验的每一位位号等于校验它的各校验位的位号之和

⑶在增大码距时,应使所有编码的码距尽量均匀的增大,以保证对所有代码的检测能力平衡的提高。

二、
校验规则为:
⑴当S5~S1为00000时,表明无错。

⑵当S5~S1中仅有一位不为0时,表明是某一校验位出错或者是3位汉明码同时出错。由于3位同时出错的情况很少,故通常认为是某一位出错,出错位是该Si对应的Pi位。

⑶当S5~S1中有2位不为0时,表明是两位汉明码同时出错,此时只能发现错误,但无法确定出错位置。

⑷当S5~S1中有3位不为0时,表明1位信息位出错或3位汉明码同时出错,由于3位同时出错的情况很少,故通常认为是某一位信息位出错。出错位的位号由S5~ S1 的4位代码值指明,此时不仅能检查出一位错,而且能够准确的定位,因而可以纠正这个错误(该位取反)。

⑸当S5~S1中有4位或5位不为0时,表明出错情况严重,系统工作可能出现故障,应当检查系统硬件的正确性。


按照以上原则,我们来看一道例题:设有一个8位信息为1010 1100,试求汉明编码的生成和校验过程。

1.编码生成:由信息位与校验位的关系2^(K-1)>=N+K+1得,K=5,即有5位校验位。将校验位关系列出,校验过哪些信息位就列出,按偶校验有:

P1=D1⊕D2⊕D4⊕D5⊕D7=1
P2=D1⊕D3⊕D4⊕D6⊕D7=1
P3=D2⊕D3⊕D4⊕D8=1
P4=D5⊕D6⊕D7⊕D8=0

在上述4个公式中,不同信息位出现在Pi项中的次数是不一样的,其中D4和D7出现了3次,而D1、D2、D3、D5、D6、D8仅出现两次。此时,不同公式中的码距不同,,因此需要再补充一项校验公式,使得各信息位被校验的次数相等:P5=D1⊕D2⊕D3⊕D5⊕D6⊕D8=1 。

则其二进制表示的汉明码为1101 0011 0101 1

2.校验
假设上述汉明码经传送后,H11(D7)位发生了错误,原码字就变为 1111 0011 0101 1

检错只需要将接收到的码字重新进行偶校验即可。

检错关系式为:
S1=P1⊕D1⊕D2⊕D4⊕D5⊕D7=1
S2=P2⊕D1⊕D3⊕D4⊕D6⊕D7=1
S3=P3⊕D2⊕D3⊕D4⊕D8=0
S4=P4⊕D5⊕D6⊕D7⊕D8=1
S5=P5⊕D1⊕D2⊕D3⊕D5⊕D6⊕D8=0

从S5向上,将校验结果列出得01011,即误字为01011,转化为十进制即为H11位出错。H11位为1,取反变为0即为正确信息。

纠正后的汉明码为 1101 0011 0101 1

以上是关于汉明码是如何校验的,比如一道题:设数据为01101001,试采用4个校验位求其偶校验方式的汉明码的主要内容,如果未能解决你的问题,请参考以下文章

AR专用汉明码

海明码校验和纠错原理 详细

计组笔记--海明校验码

校验码(海明码)

计算机系统知识—海明码

汉明码(海明码)计算方法