海明码
-
校验位个数计算
k为校验个数,n为数据位个数
2^k>=n+k+1
解释:海明码至少要能检验出n+k个1位出错情况,和不出错的情况,共n+k+1种,而k位能检测出2^k种错误,所以校验位个数k要满足2^k>=n+k+1 -
校验位位置
校验位在2^n位置H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7 D8 D9 D10 D11 P5 P1 y y y y y y y y P2 y y y y y y y y P3 y y y y y y y y P4 y y y y y y y y -
校验位计算
每个校验位用于校验一组数据位,校验位的值为索引对应位为1的所有位的异或值
例如:P1校验位用于校验索引最低位为1的所有位,即H1、H3、H5、H7、H9、H11、H13、H15,计为一个校验组,需要让校验组的所有位满足奇校验或者偶校验
对于偶校验来说,校验位为其他数据位的异或值。 -
检错
对于每个校验组,判断所有位是不是满足奇偶校验即可,不满足的校验组里就某些位置纠存在错误。 -
纠错
对每个不满足奇偶校验的校验组求交集,可以得到出错的位,然后将出错的位取反即可。
出错的位置索引可以这样计算:遍历每个校验组,如果不满足奇偶校验则索引对应位为1,否则为0。对于偶校验来说,索引每一位即对应校验组的异或值。
例如:P1校验组不满足奇偶校验,P2校验组满足奇偶校验,P3校验组不满足奇偶校验,P4校验组满足奇偶校验,P5校验组不满足奇偶校验,则出错的位置索引为:0101,即H5出错。 -
检错纠错能力
海明码具有1位比特的纠错能力和2位比特的检错能力。
检1位错和纠1位错上面已经证明了,下面说明可以检2位错,即任意两位出错都能被检测到:对于任意两个错误位置x,y,那么x和y的二进制表示中必然存在一位不同,假设为第i位,那么第i位的校验位必然不满足奇偶校验,所以可以检测到。但是并不能纠错,因为不知道是1位错还是2位错(可能会导致同样的结果)。 -
码距相关
码距和纠错能力的关系- 码距 >= e+1,可以检测e位错(因为任意错误码都得不到合法码字)
- 码距 >= 2t+1,可以纠正t位错(因为可以通过码距最小的码字修复)
- 码距 >= e+t+1,e>t,可以检测e位错,纠正t位错
可以看出海明码码距为3