漢明校驗碼

首先放個圖,爲漢明碼中信息位N與校驗位K的位數關係:
2^(K-1)>=N+K+1

碼距:一個編碼系統中任意兩個合法編碼(碼字)之間不同的二進數位(bit)數叫這兩個碼字的碼距,而整個編碼系統中任意兩個碼字的的最小距離就是該編碼系統的碼距。
在這裏插入圖片描述
以漢明校驗碼中的偶校驗爲例,若漢明碼最高位號爲m,最低位號爲1,即有Hm、Hm-1、Hm-2···H2、H1。

一、
編碼規則爲:
⑴每個校驗位Pi在漢明碼中被分到位號2^(i-1)的位置上,其餘各位爲信息位。

⑵漢明碼的每一位Hi有多個校驗位校驗,其關係式是被校驗的每一位位號等於校驗它的各校驗位的位號之和

⑶在增大碼距時,應使所有編碼的碼距儘量均勻的增大,以保證對所有代碼的檢測能力平衡的提高。

二、
校驗規則爲:
⑴當S5~S1爲00000時,表明無錯。

⑵當S5~S1中僅有一位不爲0時,表明是某一校驗位出錯或者是3位漢明碼同時出錯。由於3位同時出錯的情況很少,故通常認爲是某一位出錯,出錯位是該Si對應的Pi位。

⑶當S5~S1中有2位不爲0時,表明是兩位漢明碼同時出錯,此時只能發現錯誤,但無法確定出錯位置。

⑷當S5~S1中有3位不爲0時,表明1位信息位出錯或3位漢明碼同時出錯,由於3位同時出錯的情況很少,故通常認爲是某一位信息位出錯。出錯位的位號由S5~ S1 的4位代碼值指明,此時不僅能檢查出一位錯,而且能夠準確的定位,因而可以糾正這個錯誤(該位取反)。

⑸當S5~S1中有4位或5位不爲0時,表明出錯情況嚴重,系統工作可能出現故障,應當檢查系統硬件的正確性。


按照以上原則,我們來看一道例題:設有一個8位信息爲1010 1100,試求漢明編碼的生成和校驗過程。

1.編碼生成:由信息位與校驗位的關係2^(K-1)>=N+K+1得,K=5,即有5位校驗位。將校驗位關係列出,校驗過哪些信息位就列出,按偶校驗有:

P1=D1⊕D2⊕D4⊕D5⊕D7=1
P2=D1⊕D3⊕D4⊕D6⊕D7=1
P3=D2⊕D3⊕D4⊕D8=1
P4=D5⊕D6⊕D7⊕D8=0

在上述4個公式中,不同信息位出現在Pi項中的次數是不一樣的,其中D4和D7出現了3次,而D1、D2、D3、D5、D6、D8僅出現兩次。此時,不同公式中的碼距不同,,因此需要再補充一項校驗公式,使得各信息位被校驗的次數相等:P5=D1⊕D2⊕D3⊕D5⊕D6⊕D8=1 。

則其二進制表示的漢明碼爲1101 0011 0101 1

2.校驗
假設上述漢明碼經傳送後,H11(D7)位發生了錯誤,原碼字就變爲 1111 0011 0101 1

檢錯只需要將接收到的碼字重新進行偶校驗即可。

檢錯關係式爲:
S1=P1⊕D1⊕D2⊕D4⊕D5⊕D7=1
S2=P2⊕D1⊕D3⊕D4⊕D6⊕D7=1
S3=P3⊕D2⊕D3⊕D4⊕D8=0
S4=P4⊕D5⊕D6⊕D7⊕D8=1
S5=P5⊕D1⊕D2⊕D3⊕D5⊕D6⊕D8=0

從S5向上,將校驗結果列出得01011,即誤字爲01011,轉化爲十進制即爲H11位出錯。H11位爲1,取反變爲0即爲正確信息。

糾正後的漢明碼爲 1101 0011 0101 1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章