漢明碼詳細講解

2021-08-07 08:22:37 字數 2489 閱讀 4586

漢明碼,是r.hamming與2023年於貝爾實驗室提出的。

1.      奇偶校驗碼;

奇偶校驗碼。

假設傳輸資訊位為k=n-1位,表示為a1,an-1,加上一位奇偶校驗位(冗餘位)a0,構成乙個n位的碼字a0 -an-1,在接收端校驗時,可按照關係式:s= a0+a1+ a2+…+an-1來計算。若s=0,則無錯,若s=1,則有錯。上式可稱為監督關係式,s可稱為校正因子。

例如傳輸的資訊是1010110,可在前面加乙個校驗碼1+0+1+0+1+1+0=0.變成了01010110。在接收端重新計算一下。若有一位出錯了,結果就不等於0了。若同時兩位出錯就會校驗失敗。不難想象,若增加冗餘位,也相應增加了監督關係式和校正因子,就能區分更多情況。

如:若增加兩個校正因子,那麼取值就有4種可能:00,01,10,11.其中一位可以表示無錯,另外3位可以表示出錯位置。

2.      冗餘碼;

一般而言,資訊位為k位,增加r位冗餘位,構成n=k+r位碼字。若希望用r個冗餘位來表示無錯以及不同出錯位置,則表示為:

2r=n+1,或者2r>k+r+1。

3.      構造漢明碼的冗餘位和監督關係式的方法

按照上述設計思路,為了清晰表述,下面以資訊位k=7為例子來討論冗餘位和監督關係式。

2r>=k+4+1

其中k=7,所以r>=4,至少需要4位冗餘位(對應產生4個校正因子和4個監督關係式),形成24=16種不同取值,可以用11中分別表示無錯和a0-a10中一位出錯的情況。

我們用例如:a0, a1, a2,a3表示冗餘碼,a4,a5, a6, a7 , a8 , a9 , a10表示資訊位。

0 0 0 0  無錯

1 0 0 0  a0錯

0 1 0 0  a1錯

0 0 1 0  a2錯

0 0 0 1  a3錯

0 0 1 1  a4錯

0 1 0 1  a5錯

0 1 1 0  a6錯

0 1 1 1  a7錯

1 0 0 1  a8錯

1 0 1 0  a9錯

1 0 1 1  a10錯

a0        a1        a2        a3     a4        a5        a6        a7        a8        a9        a10

0       1       0       0       0       0       0       0       0       1       1       1

0       0       1       0       0       0       1       1       1       0       0       0

0       0       0       1       0       1       0       1       1       0       1       1

0       0       0       0       1       1       1       0       1       1       0       1

a0+ a8+ a9+a10=0

a1+ a5+ a6+a7=0

a2+ a4+ a6+a7+ a9+ a10=0

a3+ a4+ a5+a7+ a8+ a10=0

所以校正因子如下:

a0= a8+ a9+a10          (1)

a1= a5+ a6+a7          (2)

a2= a4+ a6+a7+ a9+ a10   (3)

a3= a4+ a5+a7+ a8+ a10    (4)

得出監督關係式如下:

s0= a0+a8+a9+ a10          (5)

s1= a1+a5+a6+ a7           (6)

s2= a2+a4+a6+ a7+ a9+ a10    (7)

s3= a3+a4+a5+ a7+ a8+ a10    (8)

4.      錯誤碼和s的對應關係

無錯     a0          a1              a2         a3             a4         a5              a6          a7             a8              a9      a10

0000  1000  0100  0010  0001 0011  0101  0110 0111  1001  1010 1011

接收方正是通過重新計算s來糾錯的。

5.      例項

設傳送方傳送的資訊位為a4a5a6a7a8a9              a10=1001011,則根據表示式(1), (2),(3), (4)計算,冗餘碼是a0a1a2a3=0101,則傳送碼字a0a1a2a3a4a5a6a7a8a9a10=01011001011。如果接受方接受到的是a0a1a2a3a4a5a6a7a8a9a10=01011001001,計算s0s1s2s3=1010,查表知道是a9錯。

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

1.漢明碼實質及原理 漢明碼實質上是多重奇偶校驗,其實現原理是 在有效資訊位中加入幾個校驗位形成漢明碼,使碼距比較均勻的拉大。具有檢驗並糾正一位錯誤的能力。2.核心公式介紹 2 k n k 1 其中,k代表校驗位的位數,n代表資訊位的位數 下面是資訊位n值與校驗位k值的對應關係表 重要 資訊碼位數 ...

計網筆記 海明碼(漢明碼)

海明碼是可以發現雙位元錯誤,並可以糾正單位元錯誤的編碼方案。一般來講,檢錯編碼不一定具有糾錯能力,但是糾錯編碼具有檢錯能力 其工作流程可以分為以下四個步驟 1 確定校驗碼位數r 2 確定校驗碼和資料的位置 3 求出校驗碼的值 4 檢錯並糾錯。在以下的工作流程中,我們要傳送的資料d 101101.我們...

海明碼(漢明碼)的工作機制

一 海明碼的形成方式 1 首先海明碼是由資訊位和校驗位組成的 2 資訊位校驗位的關係 校驗位的位數r 資訊位的位數i 2 r 1 i r 3 校驗位的位置是2的整數次方 如 1 2 4 8 4 海明碼位數分組 因為海明碼其實是分組的奇偶校驗碼,所以有個分組的概念 1 1 3 5 7 2 2 3 6 ...