https://www.cnblogs.com/zsswpb/p/5771636.html
【定義】
海明碼(Hamming Code)是利用奇偶性來檢錯和糾錯的校驗方法。海明碼的構成方法是在數據位之間的確定位置插入k個校驗位,通過擴大嗎距來實現檢錯和糾錯。對於數據位m的數據,加入k位的校驗碼,它應滿足:
2^k>m+k+1
【例子】
設數據為01101001,試采用校驗位求其偶校驗方式的海明碼。
(1)確定數據位D和校驗位P在海明碼中的位置:
由海明碼編碼規則可知:
pi在海明碼的第2i-1
比如P4=2^(4-1)=8,所以位於第8位
(2)確定校驗關系
這個難點在於如何確定校驗位組。
舉一個例子來說:H3=D0,海明碼下標為3,我們必須用已知的校驗位所對應的海明碼下標(P1,P2,P3,P4,它們的海明碼下標分別是 1,2,4,8)來表示3,這里3就可以等於1+2。
H5為什么是1+4而不是2+3呢?因為H3不是校驗位,是數據位。


比如P1 的校驗位為表格中紅色標記出來所對應的海明碼的位數
故:P1校驗:P1,D0,D1,D3,D4,D6
P1=D0⊕D1⊕D3⊕D4⊕D6=1⊕0⊕1⊕0⊕1=1
⊕符號:代表異或,相同則為0,不同則為1。只要仔細一定可以計算正確。
P2、P3、P4的海明碼計算也是如此,關鍵是要找出正確的校驗位組,所以海明校驗碼:011001001101