漢明碼原理解析 清晰例項講解

2021-09-29 23:12:44 字數 1905 閱讀 2508

1.漢明碼實質及原理

漢明碼實質上是多重奇偶校驗,其實現原理是:在有效資訊位中加入幾個校驗位形成漢明碼,使碼距比較均勻的拉大。具有檢驗並糾正一位錯誤的能力

2.核心公式介紹

2^k >= n+k+1

其中,k代表校驗位的位數n代表資訊位的位數

下面是資訊位n值與校驗位k值的對應關係表(重要)

資訊碼位數(n)

12~4

5~11

12~26

27~57

58~120

校驗碼位數(m)23

4567

3.確定校驗位的位置

根據上表確定校驗碼位數之後,將它插入到資訊碼中(這裡資訊碼用d表示,校驗碼用p表示),規則是:

舉個例子,現有乙個4位資訊碼(d1,d2,d3,d4),它的排列是這樣的:

d4 d3 d2p3d1p2p1

知道位置之後,下一步就是確定校驗位的值了

4.確定校驗位的值(核心)

下面通過乙個例子介紹,現在有乙個二進位制編碼1011(d1,d2,d3,d4),求它的漢明碼

位置(從右至左)

占用的校驗位號備註1

11=122

2=23

1,23=1+244

4=45

1,45=1+4

62,4

6=2+4

71,2,4

7=1+2+4

校驗碼名稱(位置)

參與校驗碼的資訊位的位置

p1 (位置為1)

1,3,5,7(1出現過的位置)

p2 (位置為2)

2,3,6,7(2出現過的位置)

p3 (位置為4)

4,5,6,7(4出現過的位置)

現在就可以根據上表確定各校驗位的值了(異或運算):

​ p1 = d1⊕d2⊕d4 = 1⊕0⊕1 = 0

​ p2 = d1⊕d3⊕d4 = 1⊕1⊕1 =1

​ p3 = d2⊕d3⊕d4 = 1⊕0⊕1 = 0

異或運算簡單來說,就是兩個相同的數結果為0,不同的數結果為1,這裡看1的個數就成,偶數為0,奇數就是1

所以生成的海明碼為

d4 d3 d2p3d1p2p1

1 1 00110

5.漢明碼糾正

假設傳輸中h6(d3)發生了錯誤,原碼就變為:

1 0 00110

檢錯過程很簡單,將接收到的碼字重新進行奇偶校驗

s1 = p1⊕d1⊕d2⊕d4 = 0⊕1⊕0⊕1 = 0

s2 = p2⊕d1⊕d3⊕d4 = 1⊕1⊕0⊕1 = 1

s3 = p3⊕d2⊕d3⊕d4 = 0⊕0⊕0⊕1 = 1

所以真值為s3,s2,s1,即110,轉換為十進位制為6,即第六位發生了錯誤,糾正

1 1 00110

漢明碼(Hamming Code)原理及實現

漢明碼實現原理 漢明碼 hamming code 是廣泛用於記憶體和磁碟糾錯的編碼。漢明碼不僅可以用來檢測轉移資料時發生的錯誤,還可以用來修正錯誤。要注意的是,漢明碼只能發現和修正一位錯誤,對於兩位或者兩位以上的錯誤無法正確和發現 設將要進行檢測的二進位制 為n位,為使其具有糾錯能力,需要再加上k位...

漢明碼(Hamming Code)原理及實現

漢明碼實現原理 漢明碼 hamming code 是廣泛用於記憶體和磁碟糾錯的編碼。漢明碼不僅可以用來檢測轉移資料時發生的錯誤,還可以用來修正錯誤。要注意的是,漢明碼只能發現和修正一位錯誤,對於兩位或者兩位以上的錯誤無法正確和發現 漢明碼的實現原則是在原來的資料的插入k位資料作為校驗位,把原來的n為...

漢明碼的原理 生成和檢驗

在計算機執行過程中,由於種種原因導致資料在儲存過程中可能出現差錯,為了能夠及時發現錯誤並且將錯誤糾正,通常可以將原資料配成漢明編碼。漢明碼具有一位糾錯能力。設將要進行檢測的二進位制 為n位,為使其具有糾錯能力,需要再加上k位的檢測位,組成n k位的 那麼,新增加的檢測位數k應滿足 2k n k 1或...