海明码问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

海明码学习过程探究

首先了解几个概念:

1.异或的运算方法是一个二进制运算:

1^1=0 0^0=0 1^0=1 0^1=1

两者相等为0,不等为1.

异或的作用:交换两个整数的值时可以不用第三个参数。

如a=11,b=9.以下是二进制

a=a^b=1011^1001=0010;

b=b^a=1001^0010=1011;

a=a^b=0010^1011=1001;

这样一来a=9,b=11了。

2.海明码是在原编码的基础上附加1部分代码,使其满足纠错码的条件,原编码可将它称为信息码,附加码称为校验码(又可称为监督码或冗余码)。编码效率最高。它属于线性分组码,由于线性码的编码和译码容易实现,至今仍是应用最广泛的1类码。

海明校验的特点不仅具有检测错误的能力,同时还具有给出错误所在准确位置的能力。

好了现在我们开始看看怎么去求海明码和他是怎样去纠错的。

海明码编码可遵循以下四个步骤:

1。由信息位数,根据海明不等式,确定校验位数

2。确定校验码位置

3。确定校验码的值

4。求出汉明码

我们现在具体看一下:

1.海明不等式2的r次方减一大于等于k+r(根据信息位数,确定校验位数,2^r-1≥k+r,其中,k为信息位数,r为校验位数。求出满足不等式的最小r,即为校验位数。)

2.确定校验码位置

从理论上讲校验码位可放在任何位置,但习惯上将它放于位置1,2,4,8……等位置。感觉记住这几个位置就行,

备注:(对于校验位少的可用强记法记住所在位置,而对于位数较多的强记法就不适用,在这里介绍1种公式法,不用死记硬背,即可求出各校验码的位置。

校验位rn对应的位置为2n,n的取值从0开始,则:

r0=20=1 r1=21=2 r2=22=4 r3=23=8

将校验位填在表格1对应的单元格内,其余位用信息码填充。表格1中,位数是指数据存放在第几位,共11位,用In表示(n的取值从1至11)。

11 10 9 8 7 6 5 4 3 2 1 位数

1 0 0 r3 1 1 0 r

2 1 r1 r0 编码

)

3.确定校验码的值(成功与否的关键)

用我自己的话写(带有局限性):海明码的位号拆分成校验码位号的2的N-1次幂的和如图2.6 备注说明然后校验码的值就等于所校验的所有位值的异或

值。over 下面是从网上找的详细解答。

在海明码中,位号数(1、2、3、……、n)为2的权值的那些位,即:1(20)、2(21)、4(22)、8(23)、…2r-1位,作为奇偶校验位

并记作: P1、P2、P3 、P4、…Pr,余下各位则为有效信息位。

例如: N=11 K=7 r=4 相应海明码可示意为

位号 1 2 3 4 5 6 7 8 9 10 11

P占位P1 P2 × P3 × × × P4×××

其中×均为有效信息,海明码中的每一位分别被P1P2P3P4… Pr 中的一至若干

位所校验,其规律是:

第i位由校验位位号之和等于i的那些校验位所校验

如:海明码的位号为3,它被P1P2(位号分别为1,2)所校验

海明码的位号为5,它被P1P3(位号分别为1,4)所校验

归并起来: 形成了4个小组,每个小组一个校验位,校验位的取值,仍采用奇偶

校验方式确定。

如表2·6 、表2·7所示:

(自我认知:感觉就是码位的拆分,拆分成校验码的2的N—1次方幂的和) 其次,校验位rn由信息码对应位数的幂之和形式中包含有n的信息码异或而得,从表格2.6 2.7分析可知, p1的值由I11(信息码为1)、I9(信息码为0)、I7位(信息码为1)、I5位(信息码为0)、I3(信息码为1)对应的信息码异

或而得,

4.求海明码。根据上面的校验码公式表表格填好后,写出海明码。

5.校验

若有17位长的信息码为1001101,由7位信息码,求出了汉明码为10011100101,若该编码传输被接收时,第7位变成了0,接收端如何来判断并且纠正错误呢?

在海明码中,通过校验因子进行验证,校验因子公式为Sn=rn(校验码) ○+ Rn(接

收码)

rn(校验码)即为所对应的r的取值,Rn(接收码)为由信息码对应位数的幂之和形

式中包含有n的信息码异或而得。

如表格4所示,出错的第7位数据用蓝色显示,黄色表示校验位,黑色表示信息

位。

S0=r0(校验码) ○+ R0(接收码)=1○+1○+0○+0○+0○+1=1

S1=r1(校验码) ○+ R1(接收码)=0○+1○+1○+0○+0○+1=1

S2=r2(校验码) ○+ R2(接收码)=0○+0○+1○+0=1

S3=r3(校验码) ○+ R3(接收码)=1○+0○+0○+1=0

求出来的S3S2S1S0=0111(即十进制7),该数指示了发生错误的比特的准确位置是第7位,1旦确定了错误的位置,接收方就可在将该位纠正过来

感觉就这么多东西了。

做几个题看看:

求信息1011的海明码。

解答:

我们可以按照上面所说的编码步骤进行解题:

(1)2r≥4+r+1,确定校验们为3位23≥4+3+1。

(2)列出公式表格。

表1-6校验位公式表

7=22+21+20,6=22+21,5=22+20,3=21+20

r2=I4+ I3+ I2

r1= I4+ I3+ I1

r0= I4+ I2+ I1

(3)根据公式得r 2 =0,r1 =0,r0=1

(4)加入表格。

表1-7 对表1-6填充数据后的表格

则海明码为1010101

例题2

信息位8位的海明码,在接收到报文110010100000,判断传输是否出错,

相关文档
最新文档