①海明校驗的基本思想
將有效資訊按某種規律分成若干組,每組安排乙個校驗位,做奇偶測試,就能提供多位檢錯資訊,以指出最大可能是哪位出錯,從而將其糾正。實質上,海明校驗是一種多重校驗。
②海明校驗的特點
它不僅具有檢測錯誤的能力,同時還具有給出錯誤所在準確位置的能力。
一.校驗位的位數 校驗位的位數與有效資訊的長度有關
設:n--為校驗碼的位數 k--是有效資訊位 r--校驗位(分成r組作奇偶校驗,能產生r位檢錯資訊)
海明碼應滿足 n=k+r≤2r-1 若r=3 則n=k+r≤7 所以k≤4
二.分組原則`
在海明碼中, 位號數(1、2、3、……、n)為2的權值的那些位,即:
1(20)、2(21)、4(22)、8(23)、…2r-1位,作為奇偶校驗位
並記作: p1、p2、p3 、p4、…pr,餘下各位則為有效資訊位。
例如: n=11 k=7 r=4 相應海明碼可示意為
位號 1 2 3 4 5 6 7 8 9 10 11
p佔位 p1 p2 × p3 × × × p4 × × ×
其中×均為有效資訊,海明碼中的每一位分別被p1p2p3p4… pr 中的一至若干位所校驗,其規律是:
第i位由校驗位位號之和等於i的那些校驗位所校驗
如:海明碼的位號為3,它被p1p2(位號分別為1,2)所校驗
海明碼的位號為5,它被p1p3(位號分別為1,4)所校驗
歸併起來: 形成了4個小組,每個小組乙個校驗位,校驗位的取值,仍採用奇偶校驗方式確定。
如表 2·6 、表2·7所示:
三.編碼、查錯、糾錯原理
以4位有效資訊(b1、b2、b3、b4)和3位校驗位(p1、p2、p3)為例: k=4 r=3
海明序號 1 2 3 4 5 6 7
海明碼 p1 p2 b1 p3 b2 b3 b4
根據表2-8可以看到
(1)每個小組只有一位校驗位,第一組是p1、第二組是p2、第三組是p3。
(2)每個校驗位校驗著它本身和它後面的一些確定位。
1.編碼原理(採用偶校驗)
1)若有效資訊b1b2b3b4=1011 先將它們分別填入第3、5、6、7位
2)再分組進行奇偶統計,分別填入校驗位p1、p2、p3的值
如:第一組有:p1b1b2b4 因b1b2b4含偶數個1,故p1應取值為0
第二組有:p2b1b3b4 因b1b3b4含奇數個1,故p2應取值為1
第三組有:p3b2b3b4 因b2b3b4含偶數個1,故p3應取值為0
海明編碼為:p1p2b1p3b2b3b4=0110011
2.查錯與糾錯
因為分三組校驗,每組產生一位檢錯資訊、3組共3位檢錯資訊,便構成乙個指誤字,上例指誤字由g1g2g3組成。
其中:g3=p3⊕b2⊕b3⊕b4 p3b2b3b4=0011
g2=p2⊕b1⊕b3⊕b4 p2b1b3b4=1111
g1=p1⊕b1⊕b2⊕b4 p1b1b2b4=0101
採用偶校驗,在沒有出錯情況下g1g2g3=000。由於在分組時,就確定了每一位參加校驗的組別,所以指誤字能準確地指出錯誤所在位。
如:若第3位b1出錯,由於b1參加了第一組和第二組的校驗,必然破壞了第一組和第二組的偶性,從而使g1和g2為1。 因為b1未參加第三組校驗,故g3=0,所以構成的指誤字g3g2g1=011它指出第3位出錯。
反之:若g3g2g1=111 則說明海明碼第7位b4出錯。因為只有第7位b4參加了3個小組的校驗,破壞了三個小組的偶性。
假定:源部件傳送海明碼為:0110011 接收端接收海明碼為:0110011
則: 三個小組都滿足偶校驗要求,這時g3g2g1=000,表明收到資訊正確,可以從中提出有效資訊1011參與運算處理。
糾錯:若接收端收到的海明碼為0110111,分組檢測後指誤字g3g2g1=101,它指出第5位出錯,則只須將第5位變反,就可還原成正確的數碼0110011。
海明碼校驗程式設計
海明碼校驗程式設計 1 海明碼編碼 輸入 一串二進位制資料串 輸出 插入海明碼後的二進位制資料串 2 海明碼糾錯 輸入 一串含海明碼的二進位制資料串 輸出 通過海明碼校驗,檢查該二進位制串是否有錯,若有錯誤,則對錯誤位進行糾錯,將糾錯後的二進位制串輸出。這裡我們僅從程式設計實現的角度分析海明碼的編碼...
資料校驗之海明碼
在計算機的世界裡,所有資料都以二進位制的形式存在,而網際網路的出現讓計算機之間的溝通成為可能,它們彼此通過相互傳遞資料實現對話.那怎麼確保一台計算機向另一台計算機傳送的資料沒有因為網路波動造成資料跳變呢?因此為了確保每台計算機接受到的資料都是準確無誤的,我們需要創造一種校驗機制以保證傳輸資料的正確性...
資料校驗 奇偶校驗 海明碼
2.海明碼 2 實現 計算機中的資料都是用0 1表示的,在物理層面,就是高電平和低電平,這就存在資料出錯的可能性。首先講資料進行分組,比如8位是一組,每一組對應乙個校驗碼位。如果8位資料有奇數個1,那麼校驗碼位就是1,如果8位資料位有偶數個1,那麼校驗碼位就是0。第一,如果是兩位資料位同時發生錯誤,...