汉明码原理和校验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汉明码编码原理和校验方法
可以利用汉明码来检测并纠错,简单的说,汉明码是一个错误
校验码码集,由Bell实验室的R.W.Hamming发明,因此定名
为汉明码。用于数据传送,能检测所有一位和双位差错并纠正
所有一位差错的二进制代码。汉明码的编码原理是:在n位有
效信息位中增加k为检验码,形成一个n+k位的编码,然后把
编码中的每一位分配到k个奇偶校验组中。每一组只包含以为
校验码,组内按照奇偶校验码的规则求出该组的校验位。
在汉明校验码中,有效信息位的位数n与校验位数K满足下列关系: 2^K-1>=n+k.
1. 校验码的编码方法
(1)确定有效信息位与校验码在编码中的位置
设最终形成的n+k位汉明校验码为Hn+k….H2H1,各位的位号按照从右到左的顺序依次为1,2,…,n+k,则每一个检验码Pi所在的位号是2^(i-1),i=1,2,…,k。有效信息位按照原排列顺序依次安排在其他位置上。
假如有七位有效信息位X7X6X5X4X3X2X1=1001101,n=7,可以得出k=4,这样得到的汉明码就是11位,四个校验码P4P3P2P1对应的位号分别是8,4,2,1(即2^3,2^2,2^1,2^0).
11位汉明码的编码顺序为:
位号 11 10 9 8 7 6 5 4 3 2 1 编码 X7 X6 X5 P4 X4 X3 X2 P3 X1 P2 P1 (2)将n+k位汉明码中的每一位分到k个奇偶组中。
对于编码中的任何一位Hm依次从右向左的顺序查看其Mk-1…M1M0的
每一位Mj(j=0,1,…,k-1),如果该位为“1”,则将Hm分到第j组.(如:位号是11可表示成二进制1011,第零位一位三位都是1,所以此编码应排在第0组第1组第3组)
把11~1写成4位二进制的形式,分组结果如下:
位号 11 10 9 8 7 6 5 4 3 2 1 二进制1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 编码 X7 X6 X5 P4 X4 X3 X2 P3 X1 P2 P1 第0组X7 X5 X4 X2 X1 P1 第1组X7 X6 X4 X3 X1 P2
第2组 X4 X3 X2 P3
第3组X7 X6 X5 P4
(3)根据分组结果,每一组按照奇或偶校验求出校验位,形成汉明校验码。若采用奇数校验,则每一组中“1”的个数为奇数,反之为偶数。(X7X6X5X4X3X2X1=1001101)
若用奇校验,则 _________________
P1=X7⊕X5⊕X4⊕X2⊕X1=X7⊙X5⊙X4⊙X2⊙X1=0;
同理可得 P2=1 ; P3=1 ; P4=0
将这些校验码与有效信息位一起排列(分别插入到1,2,4,8位),可以
得到11位汉明校验码:10001101110;
若采用偶校验,则
P1= X7⊕X5⊕X4⊕X2⊕X1= 1⊕0⊕1⊕0⊕1=1;
P2=0; P3=1; P4=0
将这些校验码与有效信息位一起排列,可得到11位汉明编码:10011100101
2.校验码的校验方法
在信息传输中,将校验位与有效信息位一起形成的汉明校验码进行保存和传送,当接收到对方的校验码后,需要对其进行校验,判断是否出错。
校验方法就是:把n+k位校验码重新再分为k个组。若用奇校验,则每一组中“1”的个数应该为奇数;若用偶校验,则每组中“1”个数应该为偶数,如果不满足表示出错了。
对上面的例子校验码进行校验,四位校验结果为:
E0= X7⊕X5⊕X4⊕X2⊕X1⊕P1=1;
E1=1; E2=1; E3=1
_ _ _ _
因为 E3 E2 E1 E0=0000,所以接收到的汉明码是正确的。
假如收到的代码是10001111110,得到的校验结果为
E0=0 ;E1=1; E2=0;E3=1
_ _ _ _
因为 E3 E2 E1 E0=0101,不全是0,表示接收的校验码有错(并且
0101是二进制5)即把第五位取反,就可以得到正确的代码。