例如傳送過來的資料是
: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 求它的海明編...