海明码,小名汉明码(Hamming Code),以发明者理查德·卫斯里·汉明的名字命名。海明码具有检错和纠错双功能,它基于奇偶校验原理,只能检查出某一位错码的位置。当有多位错码时,它就不适用了。

问:海明码的计算,数据为1110,请计算附加纠错码以后的数据。

1. 计算校验位的个数及其所在位置

根据公式,2k-1>=n+k,其中k表示校验码位个数,n表示数据位个数,根据计算可以得出,k=3,则有3个校验位。

又因为校验位的位置下标为2m (m=0,1,2....),所以下标分别为1,2,4

则位置表示为:

十进制下标 7 6 5 4 3 2 1
二进制下标 111 110 101 100 011 010 001
位置标记 D4 D3 D2 P3 D1 P2 P1
记录值 1 1 1 ? 0 ? ?

2. 计算校验位的值

1)因为P1的下标二进制值为001,则由下标二进制值第一位为1的位异或计算得出,即P1 = D1 ^ D2 ^ D4
2)同理如上,由下标二进制值第二位为1的位异或计算得出,即P2 = D1 ^ D3 ^ D4
3)同理如上,由下标二进制值第三位位1的位异或计算得出,即P3 = D2 ^ D3 ^ D4

计算可得:
P1 = D1 ^ D2 ^ D4 = 0 ^ 1 ^ 1 = 0
P2 = D1 ^ D3 ^ D4 = 0 ^ 1 ^ 1 = 0
P3 = D2 ^ D3 ^ D4 = 1 ^ 1 ^ 1 = 1

所以最终计算可得出附加纠错码后的值为:1111000