漢明碼是用來校驗存儲器傳輸資料是否正确的一種編碼方式。
漢明碼具有一位糾錯能力。
漢明碼需要在原有資料位上增加一定資料位進行校驗。
設資料為 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。