海明码,小名汉明码(Hamming Code),以发明者理查德·卫斯里·汉明的名字命名。海明码具有检错和纠错双功能,它基于奇偶校验原理,只能检查出某一位错码的位置。当有多位错码时,它就不适用了。
一、校验位数的确定
下面以信息码1010,110为例确定海明码的校验位数
设数据有K位,校验码有r位。则校验码一共有2^r种组合 。其中需要一种取值方式表示数据正确,剩下2^r−1种取值方式表示有一位数据出错。因为编码后的二进制串有K+r位,因此r应该满足海明不等式:
2^r −1≥K+r 使不等式成立的r的最小值就是校验码的位数。
在本例中,K=7,解得r=4。
信息码和校验码的对应关系如下表:
信息码位数 K 1,2~4, 5~11,12~26,27~57,58~120
校验码位数 r 2,3 , 4 ,5 ,6 ,7
二、海明距离
两个码字对应比特位取值不同的比特数称为这两个码字的海明距离。举例如下:10101和00110从第一位开始依次有第一位、第四、第五位不同,则海明距离为3。
三、海明码编码
在海明码中,位号数为2的权值的那些位,即1、2、4、8......位,作为奇偶校验位,并记作:P1,P2,P3,P4……Pr,余下各位则为有效信息位。
设N为海明码字的位数,K是有效数据位,r是校验位(分成r组作奇偶校验,能产生r位检错信息)
例如:K=7 则 r=4, 于是N=11相应的海明码可示意为:
位号 1 2 3 4 5 6 7 8 9 10 11
P占位 P1 P2 x P3 x x x P4 x x x
其中“x”为有效数据位,海明码中的每一位分别被P1 P2 P3 P4……Pr中的一至若干位所校验,其规律是:
以1010,110为例进行说明:
K=7,由海明不等式可知r=4,相应的海明码可示意为下表:
位号 1 2 3 4 5 6 7 8 9 10 11
P占位 P1 P2 1 P3 0 1 0 P4 1 1 0
海明码码字为p1 p2 1 p3 0 1 0 p4 1 1 0,码字共K+r=7+4=11位
首先将上表中位号十进制转换为二进制:
位号 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011
P占位 P1 P2 1 P3 0 1 0 P4 1 1 0
根据奇偶校验规则确定出p1=0,p2=1,p3=1,p4=0,所以海明码码字为011,1010,0110,其中p1,p2,p3,p4的确定方法在此不再详述。
原文:
https://blog.csdn.net/u014470361/article/details/79848824
https://blog.csdn.net/fu_jian_ping/article/details/80644264