計算及校驗海明碼的3個舉例


海明碼具有檢錯糾錯能力,用於傳輸質量較好的信道,因為出錯太多檢測不出來。

m位數據需要滿足具有r位校驗碼

m+r ≤ 2r-1

校驗位放在2n位置上,如??1? 111? 1111 111? 111...

校驗碼依次在20 21、 22、 23、 24位置上,有的是從后往前寫的,結果不影響,知道怎么算就行。

 

 

 

例1,計算1011的海明碼及檢驗

1. 算校驗位

原數據1011, 有4位數據位, 需滿足4+r≤2r-1這個公式, 求得r=3,表明有3個檢驗位,以下用a、b、c、...來代替

得到ab1c011

2. 算校驗位值

令發送方和接受方都采用偶檢驗的方法,也就是保證1的個數為偶數。采用奇檢驗結果也一樣,但收發雙方一定要用相同的檢驗方法。

a b 1 c 0 1 1

第一位檢驗位a的計算方法:從a開始檢驗一位,跳過一位,即20位,利用偶檢驗確定a。

第二位檢驗位b的計算方法:從b開始檢驗兩位,跳過兩位,即21位,利用偶檢驗確定b。

第三位檢驗位c的計算方法:從c開始檢驗四位,跳過四位,即22位,利用偶檢驗確定c。


a b 1 c 0 1 1

a 1 0 1 偶檢驗確定a=0


 a b 1 c 0 1 1

b 1 1 1 偶檢驗確定b=1


 a b 1 c 0 1 1

后面沒有了,所以就是c 0 1 偶檢驗確定c=0


 代入abc得海明碼0110 011

3. 檢驗

傳輸海明碼,若在信道上受到干擾,導致一位編碼出現異常由0110 0110111 011

根據確定檢驗位的值來檢驗,第n組 檢驗2n位,跳過2n位,分別把每組的數據異或,得出錯位置。這里的異或也就是相當於偶檢驗的過程,1的個數為偶數G就為0。


 0 1 1 1 0 1 1

G1=0⊕101=0


0 1 1 1 0 1 1

G2=1⊕1⊕1⊕1=0


0 1 1 1 0 1 1

G3=1⊕0⊕1⊕1=1


由於發送端采用的是偶檢驗那么G3G2G1=000可說明傳送中沒有出錯,G3G2G1=100轉化為十進制說明海明碼第4位出錯,將第四位糾錯后變成0110 011

 

 

 

例2,計算0111 011的海明碼及檢驗

1. 算校驗位

m=7,根據m+r ≤ 2r-1求得r=4

a b 0 c 1 1 1 d 0 1 1

2. 算校驗位值

令發送方和接受方都采用偶檢驗的方法,也就是保證1的個數為偶數。

a b 0 c 1 1 1 d 0 1 1


a b 0 c 1 1 1 d 0 1 1

a 0 1 1 0 1 偶檢驗確定a=1


a b 0 c 1 1 1 d 0 1 1

 b 0 1 1 1 1 偶檢驗確定b=0


a b 0 c 1 1 1 d 0 1 1

c 1 1 1 偶檢驗確定c=1


a b 0 c 1 1 1 d 0 1 1

d 0 1 1 偶檢驗確定d=0


代入abcd得海明碼1001 1110 011

3. 檢驗

傳輸海明碼,若在信道上受到干擾,導致一位編碼出現異常由1001 1110 0111001 1110 111

根據確定檢驗位的值來檢驗,第n組 檢驗2n位,跳過2n位,分別把每組的數據異或,得出錯位置。


1 0 0 1 1 1 1 0 1 1 1

 G1=1⊕0⊕1⊕111=1


1 0 0 1 1 1 1 0 1 1 1

G2=0⊕0⊕1⊕1⊕1⊕1=0


1 0 0 1 1 1 1 0 1 1 1

G3=1⊕1⊕1⊕1=0


1 0 0 1 1 1 1 0 1 1 1

G4=0⊕1⊕1⊕1=1


由於發送端采用的是偶檢驗那么G4G3G2G1=0000可說明傳送中沒有出錯,G4G3G2G1=1001轉化為十進制說明海明碼第9位出錯,將第9位糾錯后變成1001 1110 011

 

 

 

例3,計算0111 0110 11的海明碼及檢驗

再來個多的,再多就沒有意義了。

1. 算校驗位

m=10,根據m+r ≤ 2r-1求得r=4

a b 0 c 1 1 1 d 0 1 1 0 1 1

2. 算校驗位值

令發送方和接受方都采用偶檢驗的方法,也就是保證1的個數為偶數。

a b 0 c 1 1 1 d 0 1 1 0 1 1


a b 0 c 1 1 1 d 0 1 1 0 1 1

a 0 1 1 0 1 1偶檢驗確定a=0


a b 0 c 1 1 1 d 0 1 1 0 1 1

b 0 1 1 1 1 1偶檢驗確定b=1


a b 0 c 1 1 1 d 0 1 1 0 1 1

c 1 1 1 1 1偶檢驗確定c=1


a b 0 c 1 1 1 d 0 1 1 0 1 1

d 0 1 1 0 1 1偶檢驗確定d=0


代入abcd得海明碼0101 1110 0110 11

3. 檢驗

傳輸海明碼,若在信道上受到干擾,導致一位編碼出現異常由0101 1110 0110 110001 1110 0110 11

 根據確定檢驗位的值來檢驗,第n組 檢驗2n位,跳過2n位,分別把每組的數據異或,得出錯位置。


0001 1110 0110 11

G1=0⊕0⊕1⊕1⊕0⊕11=0


0001 1110 0110 11

G2=0⊕0⊕1⊕1⊕1⊕11=1


0001 1110 0110 11

G3=1⊕1⊕1⊕1011=0


0001 1110 0110 11

G4=0⊕0⊕1⊕1011=0


由於發送端采用的是偶檢驗那么G4G3G2G1=0000可說明傳送中沒有出錯,G4G3G2G1=0010轉化為十進制說明海明碼第2位出錯,將第2位糾錯后變成0101 1110 0110 11

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM