海明校验码的简单计算
海明码,小名汉明码(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