海明码问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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,判断传输是否出错,