天天看點

是人都能看得懂的------海明校驗碼以及循環備援(計算機組成原理)

海明碼的作用:不但能夠檢驗出錯,還能查出哪一位出錯了。

例如傳送過來的資料是

:1010

(k表示校驗碼的位數)

(n表示例如1010表示n=4)

第一步--->通過公式找到k值;

          --->2^k>=n+k+1;

          --->k=3;

第二步 給1010每一個位标上位置;

          --->  1   0    1     0 

          --->D4 D3  D2  D1

第三步 找到校驗碼插入的位置;

          (已知k=3,有三位校驗碼)

          --->p1=(2^i-1)=1;

          --->p2=(2^i-1)=2;

          --->p3=(2^i-1)=4;

第四步:将校驗碼插入編碼的位置排列;

          --->H7  H6  H5  H4  H3  H2  H1

          --->D4  D3  D2  p3   D1  p2  p1

          ---> 1     0     1            0

第五步:将每位資料對應的位置記下來,通過

十進制轉成二進制();

          --->       位            十進制           二進制

          --->D1   H3:              3               0   1   1

          --->D2   H5:           5               1   0   1

          --->D3   H6:              6               1   1   0

          --->D4   H7:              7               1   1   1

第六步:進行異或操作(這裡用@代替異或操作);

(異或口訣:同為0,異為1)

(這裡要注意如果上面的二進制位,某一位為0,則不能加入下面異或操作,

比如二進制位看,從上往下看,,豎列,則D3無法加入到p1裡面異或如下)

          --->[email protected]@[email protected]@1=0;

          --->[email protected]@[email protected]@1=1;      --->表示錯誤->2;

          --->[email protected]@[email protected]@1=0;

第七步:将剛才p1p2p3得到得數字放到1010中去,得到

          --->D4  D3  D2  p3   D1  p2  p1

          --->1     0     1      0     0    1    0

接收到得資料:1010010;

第八步:糾錯進行偶檢驗;

          --->[email protected]@[email protected][email protected]@[email protected]=0;

          --->[email protected]@[email protected][email protected]@[email protected]=0;      

          --->[email protected]@[email protected][email protected]@[email protected]=0;

          --->都為0則表示無錯誤;

//

如果出錯得話例如p2=0等話;

          --->[email protected]@[email protected][email protected]@[email protected]=0;

          --->[email protected]@[email protected][email protected]@[email protected]=1;     --->(010)換成十進制表示第2位出錯  

          --->[email protected]@[email protected][email protected]@[email protected]=0;

          --->(010)第二位出錯,按位取反;

這就是海明校驗碼;

繼續閱讀