海明码由信息码和校验码两部分组成,设海明码为n位,信息码为m位,校验码为r位,则n = m + r。
校验码的位数
海明码仅能检测其中一位出错的状态,信息码有m位,若仅有一位出错,则有m种状态,同理,若校验码出错则有r种状态,加上正确的状态,共有m + r + 1种状态。
r位的二进制校验码共能表示种状态,若要包含其全部的状态,则有
。
假设信息码为1011 0101,则m=8,由上文不等式可得,则r = 4,校验码有4位。
校验码的位置
校验码应该放在处,其中k = 0,1,2,...,r-1。
假设信息码仍为上文的1011 0101,信息码加校验码共有n = m + r = 8 + 4 = 12位,对其编号:
12 11 10 9 8 7 6 5 4 3 2 1
r = 4,故校验码应放在,
,
,
,即1,2,4,8处,其余八位按序填入信息码:
1 0 1 1 0 1 0 1
校验码的确定
汉明码共有12位,其编号1 - 12分别可以写作:
1 = ;
2 = ;
3 = +
;
4 = ;
5 = +
;
6 = +
;
7 = +
+
;
8 = ;
9 = +
;
10 = +
;
11 = +
+
;
12 = +
;
校验码四位编号分别位1、2、4、8。
先看第1位:1 = ,找出上文编号中所有含
的编号,即1、3、5、7、9、11,除去1号位为检验码未知外,其余均为已知,则有
1 0 0 1 0
海明码为偶校验(1的数量为偶数),则 1 0 0 1 0中第1位应为0。
剩下三位确定方式相同,不再赘述。