海明碼之編碼原理和校驗方法

2021-09-21 02:05:49 字數 2349 閱讀 3391

海明碼,小名漢明碼(hamming code),以發明者理查德·衛斯里·漢明的名字命名。海明碼具有檢錯和糾錯雙功能,它基於奇偶校驗原理,只能檢查出某一位錯碼的位置。當有多位錯碼時,它就不適用了。

在了解漢明碼之前,先熟悉下異或運算奇偶校驗

異或運算

異或運算,相異為1,相同為0。它也叫模2和、模2加法,本質上是不帶進製的加法。

常用的公式是:(ab

)a(a^b)^a

(ab)

a=b,即兩個數異或結果在與其中乙個數異或得到的是另乙個數。

常用的應用:多用在一些加密演算法中,將要加密的資料和一些已知數進行異或運算,得到加密後的資料。

奇偶校驗 :

1010110為例進行海明碼編碼。

第一步先確定需要多少位校驗碼。

設資料有n位,校驗碼有x位。則校驗碼一共有2

x2^x

2x種取值方式。其中需要一種取值方式表示資料正確,剩下2

x2^x

2x−1種取值方式表示有一位資料出錯。因為編碼後的二進位制串有n+x位,因此x應該滿足:2

x2^x

2x−1 ≥ n

nn + xxx

使不等式成立的x的最小值就是校驗碼的位數。在本例中,n=7,解得x=4。

資訊碼和校驗碼的對應關係如下表:

由於奇偶校驗原理一樣,偶校驗的計算更為簡單,實際中多用偶校驗,本例中也以偶校驗進行計算。

如圖中:

每一行都是從對應的校驗位開始校驗,即從第2

n2^n

2n/2

22位開始校驗,校驗2

n2^n

2n/2

22個,然後跳過2

n2^n

2n/2

22個。

下面計算本例子,將**中的位置用二進位制表示:

x1的計算:

x 1x1

x1是第乙個校驗碼,位置對應欄所有最後一位為1(***1格式)的相異或為0,即

則x 1x1

x1=0;x2x2

x2計算:

x 2x2

x2是第二個校驗碼,位置對應欄所有倒數第二位為1(xx1x格式)的相異或為0,即

則x 2x2

x2=1;x3x3

x3計算:

x 3x3

x3是第三個校驗碼,位置對應欄所有倒數第三位為1(x1xx格式)的相異或為0,即

則x 3x3

x3=1;x4x4

x4計算:

x 4x4

x4是第四個校驗碼,位置對應欄所有倒數第四位為1(1***格式)的相異或為0,即

則x 4x4

x4=0;所以最終的海明碼是01110100110

**:

海明碼的編碼和校驗方法

海明碼 也叫漢明碼 具有一位糾錯能力。本文以1010110這個二進位制數為例解釋海明碼的編碼和校驗方法。編碼確定校驗碼的位數x 設資料有n位,校驗碼有x位。則校驗碼一共有2x種取值方式。其中需要一種取值方式表示資料正確,剩下2x 1種取值方式表示有一位資料出錯。因為編碼後的二進位制串有n x位,因此...

海明碼的編碼和校驗方法

海明碼 也叫漢明碼 具有一位糾錯能力。本文以1010110這個二進位制數為例解釋海明碼的編碼和校驗方法。編碼確定校驗碼的位數x 設資料有n位,校驗碼有x位。則校驗碼一共有2x種取值方式。其中需要一種取值方式表示資料正確,剩下2x 1種取值方式表示有一位資料出錯。因為編碼後的二進位制串有n x位,因此...

海明碼校驗原理

海明校驗的基本思想 將有效資訊按某種規律分成若干組,每組安排乙個校驗位,做奇偶測試,就能提供多位檢錯資訊,以指出最大可能是哪位出錯,從而將其糾正。實質上,海明校驗是一種多重校驗。海明校驗的特點 它不僅具有檢測錯誤的能力,同時還具有給出錯誤所在準確位置的能力。一 校驗位的位數 校驗位的位數與有效資訊的...