天天看點

漢明碼編碼

漢明碼是用來校驗存儲器傳輸資料是否正确的一種編碼方式。

漢明碼具有一位糾錯能力。

漢明碼需要在原有資料位上增加一定資料位進行校驗。

設資料為 n 位,則需要增加 k 位校驗位。公式:2^k>=n+k+1

資料在計算機中用二進制表示,故将漢明碼增加在2^k位置上使得每組測試資料中該位置一樣。

故得測試小組:

C1:   1,3,5,7,9,11……位 (符合XXXX1)

C2:2,3,6,7,10,11……位(符合XXX1X)

C3:4,5,6,7,12,13……位(符合XX1XX)

略……

例:傳入資料是0101,如何設計漢明碼以及如何校驗資料是否正确?(偶校驗)

解:

首先,普及一下奇偶校驗的知識。

奇校驗是每組測試小組上的各個數是1的個數是奇數,就是C1:第1位^第3位^第5位……=1;

偶校驗則為偶數。

由此可得,先通過公式計算出要增加的漢明碼位數為三位。分别是A,B,D;

(漢明碼)位置号:A,B,C,D,E,F,G

已知C=0,E=1,F=0,G=1;

是以可以求得,A=0,B=1,C=0;

最終結果為:0100101

糾錯:如果傳入後得到資料為0100111

發現:C1小組1的數量為偶數

           C2小組1的數量為奇數

           C3小組1的數量為奇數

易知:C1的A,C,E,G無錯。C2與C3錯了一位,而F位相同,故F為出錯。可改正為0100101。