大家好,欢迎来到IT知识分享网。
海明码是一种利用奇偶性来差错和纠错的校验方法。海明码的构成方法是在数据位之间的特定位置插入K个校验位,通过扩大码距来实现检错和纠错。
假设数据位是n位,校验位是k位,则n和k的关系必须满足以下关系:
2^k -1 >= n+k
依据给定的数据位,很容推断到校验位,但是校验位在数据中的位置需要立即。
还是以一个实际的例子说明吧:
原始数据:1011
这样 n=4 , 将 k=1,2,3,… 代入公式很容发现 k=3就满足条件,2^3-1 >=4+3
所以校验码位数为3位,数据和校验码一共7位。
校验码的位置都处在2的n(n=0,1,2,3…)次方中,即位于1,2,4,8,16…的位置上,其余为才能填充数据。
本例就7位数据组成:D4D3D2D1+P2P1P0
7 6 5 4 3 2 1
D4 D3 D2 ** P2** D1 P1 P0
1 0 1 1
7=4+2+1 ==> 第4位 P2,第2位P1,第1位 P0 这3个校验位共同校验
6=4+2==> 第4位 P2,第2位P1 这2个校验位共同校验
5=4+1 ==> 第4位 P2,第1位 P0 这2个校验位共同校验
3=2+1 ==> 第2位P1,第1位 P0 这2个校验位共同校验
校验码计数,异或运算:
P2 = D7D6D5=101=0
P1=D7D6D3=101=0
P0=D7D5D3=111=1
校验码为:001
传输数据为: 1 0 1 0 1 0 1
检错和纠错原理
接收方依据同样的规则重新计算三位校验码的值。而后与接收到的校验码进行异或。当数据无误时,产生的校验码无误,若接收到的校验码有误,那么这不同的2个校验码异或,必然为1.
若某位的校验码最终异或结果为1,则表示产生了错误,找出错误位之后,就可以纠错了,纠错方法就时将该为逆转。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/10673.html