看得懂的海明校驗碼

2021-10-12 07:00:01 字數 1729 閱讀 4896

例如傳送過來的資料是

: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裡面異或如下)

--->p1=d1@d2@d4=0@1@1=0;

--->p2=d1@d3@d4=0@0@1=1;      --->表示錯誤->2;

--->p3=d2@d3@d4=1@0@1=0;

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

--->d4  d3  d2  p3   d1  p2  p1

--->1     0     1      0     0    1    0

接收到得資料:1010010;

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

--->s1=p1@d1@d2@d4=0@0@1@1=0;

--->s2=p2@d1@d3@d4=1@0@0@1=0;      

--->s3=p3@d2@d3@d4=0@1@0@1=0;

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

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

--->s1=p1@d1@d2@d4=0@0@1@1=0;

--->s2=p2@d1@d3@d4=0@0@0@1=1;     --->(010)換成十進位制表示第2位出錯  

--->s3=p3@d2@d3@d4=0@1@0@1=0;

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

這就是海明校驗碼;

海明校驗碼

這是關於計算機基礎的知識。我們都知道計算機系統執行時,各個部件之間要進行資料交換,為了確保資料在傳送的過程中正確無誤,一是提高硬體電路的可靠性,二是提高 的校驗能力,包括查錯和糾錯。此文主要是從海明碼的校驗能力來說,也是使用校驗碼的方法來檢測傳送的資料是否出錯。它的實現原理,是在m個資料位之外加上k...

海明校驗碼

是由貝爾實驗室的richard hamming設計的,是一種利用奇偶性來檢錯和糾錯的檢驗方法。海明碼的構成方法是在資料位之間的特定位置上插入k個校驗位,通過擴大碼距來實現檢錯和糾錯。實現原理 是在m個資料位之外加上k個校驗位,從而形成乙個m k位的新的碼字,使新的碼字的碼距比較均勻地拉大。把資料的每...

海明校驗碼

計算機組成中的海明校驗碼,相信學過的都會有了解,那麼對其中校驗位的確定,我想似乎有些人不是很明白,今天我來詳細的把如何確定校驗位分享一下 首先看下基本的概念 2 r k r 1 其中r為校驗位 k為資訊位 資訊位是已知的,那麼如何確定校驗位呢,用乙個例子來說明 例如 二進位製碼1011 求它的海明編...