校驗碼(主要為海明碼)

2021-05-24 13:49:13 字數 1952 閱讀 5613

今天講校驗碼。有些問題講前似乎很清楚,但講的過程中發現思路還不是那麼清楚。此處再回顧一下。

由若干位**組成的乙個字叫做碼字。

一種碼制是若干種碼字的組合。

將兩個合法碼字逐位比較,不同二進位制數的位數成為兩個碼字間的距離。

一種碼制中,各碼字間的最小距離稱為該碼制的「碼距」。  

例如,8位補碼,碼字是8位二進位制組成的字,不同碼字最少1位不同,故碼距為1。再如奇偶校驗,9位的奇偶校驗可以表示的合法碼字共28

個,另外28

個為非法碼字。乙個合法碼字要變到另外乙個合法碼字,至少要有兩位同時變化,所以碼距為2。

為了增加碼制的碼距,要加入校驗位,校驗位和資料位組成「碼字」。 如海明碼中的碼字包括資料位和校驗位。

交叉奇偶校驗中,如果傳輸的資料1位發生了錯誤,則可以定位到錯誤。可以檢測到兩個位同時發生錯誤,無論它們位於同行、同列還是不同行列。但是不能保證發現4位同時出錯,如四位構成長方形。

假定海明碼為m位,其中資訊碼n位,校驗碼k位。k位校驗位共2k個組合,1個用來表示傳輸資訊無誤,k個用來表示某個校驗位出錯,n個用來表示某個資料位出錯。

若要求海明碼能指出並糾正一位錯,則資料位的位數

n和校驗位的位數

k應滿足如下關係(海明不等式): 2

k≥k+

n+1 ,即  2 k≥m

+1 , 2 k

-1≥m(海明碼位數不超過k個校驗位的資料表示範圍)

設:海明碼hm

hm-1

……h2h1

的最高位號為

m ,最低位號為

1。編碼規則為:

①每個校驗位pi

在海明碼中被分配在位號2i

-1的位置,其餘各位為資料位,並按從低向高逐位依次排列的關係分配。

②海明碼的每一位碼hi

由多個校驗位作校驗,被校驗的每一位的海明碼位號等於校驗它的各校驗位的海明碼位號之和,以便使校驗的結

果能正確反映出錯位的位號。

③在增大合法碼的碼距時,盡量使所有碼的碼距均勻的增大,以保證對所有碼的檢錯能力平衡提高。

因為2 k

-1≥m,海明碼的下標用k位2進製數表示,對應位為1的相應校驗位將校驗該位。例如,如果校驗位共4位,則h6的下標為0110,被p2和p3校驗;h15的下標為1111,被p1、p2、p3和p4校驗;資料位至少跟

2個校驗位相關,至多跟

4個相關,故碼距為3。

根據校驗位對資料位分組,相關資料位和校驗位形成奇校驗或偶校驗(以偶校驗為例)。例如,如果資訊碼16位,校驗位5位,則各校驗位可以根據在下標中的出現情況找到相關資料並通過異或運算計算得到。

如果要求海明碼能檢測發現

2位錯並能自動糾正一位錯,根據糾錯理論,碼距必須增加到

4。可以通過將原海明碼中與兩個校驗位相關的資料位擴充套件為與

3個校驗位相關,即增加

1個校驗位,使該校驗位

pk+1

為這些校驗位的異或值。這樣,校驗位增加到了

k+1位,原海明不等式

2 k』≥k』

+n+1(k』=k-1

,代入海明不等式

)變為:

2 k-1

≥k+n

因為校驗位的計算公式通過相關資料位的異或得到,當相關資料位出錯時,會引起

si(相關公式參考課件)變為

1。因為資料位的海明碼下標正好可分解為相關校驗位的加權和,通過構成的值可判斷出錯的資料位。

海明碼中,如果僅有乙個si為

1,除了相應校驗位可能出錯外,也可能同時三位海明碼出錯,例如d1、

d2、p3錯會使s2為

1,d1、

d5、p4錯也會使s2為

1,雖能檢測到錯誤,但錯誤位置不確定。

推廣海明碼中,因為附加校驗位的引入,碼距變為

4。當出現兩個si為

1時,肯定是兩位海明碼出錯,但無法定位錯誤。

相對比較簡單,注意出錯時餘數的迴圈。

海明碼 CRC冗餘校驗碼

海明碼 也叫漢明碼 具有一位糾錯能力。本文以1010110這個二進位制數為例解釋海明碼的編碼和校驗方法 設資料有n位,校驗碼有x位。則校驗碼一共有2x種取值方式。其中需要一種取值方式表示資料正確,剩下2x 1種取值方式表示有一位資料出錯。因為編碼後的二進位制串有n x位,因此x應該滿足 2x 1 n...

校驗碼 漢明碼 CRC碼

資料校驗碼 任意兩個碼字之間最少變化的二進位制位數,被稱為資料校驗碼的碼距 例如用四位二進位制數表示16種狀態,此時碼距為1,即兩個碼字之間最少僅有乙個二進位制不同,這種編碼沒有檢錯能力。檢糾錯能力實現原理 在編碼中,除去合法的碼字外,再加入一些非法的碼字,當某個合法的碼字出現錯誤時,就變成為非法碼...

海明校驗碼

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