- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汉明码原理和校验
汉明码编码原理和校验方法
当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错,简单的说,汉明码是一个错误校验码码集,由Bell实验室的R.W.Hamming发明,因此定名为汉明码。用于数据传送,能检测所有一位和双位差错并纠正所有一位差错的二^K-1=n+k.
1. 校验码的编码方法
(1)确定有效信息位与校验码在编码中的位置
设最终形成的n+k位汉明校验码为Hn+k….H2H1,各位的位号按照从右到左的顺序依次为1,2,…,n+k,则每一个检验码Pi所在的位号是2^(i-1)…,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)即把第五位取反,就可以得到正确的代码。
/
/
/u/5925165099?is_hot=1
http://7872./
/
kz7XcA05w190
文档评论(0)