奇偶校驗 海明校驗碼 迴圈冗餘校驗碼

2021-09-28 01:27:33 字數 2135 閱讀 4276

奇偶校驗

奇偶校驗包含奇校驗和偶校驗兩種校驗。

奇校驗(odd parity)約定的編碼規律是,讓整個校驗碼(包含有效資訊和校驗位)中「1」的個數為奇數。

偶校驗(even parity)約定的編碼規律是,讓整個校驗碼中「1」的個數為偶數。

有效資訊(被校驗的資訊)部分可能是奇性(「1」的個數為奇數)的,也可能是偶性的,所以奇、偶兩種校驗都只需配乙個校驗碼,就可以使整個校驗碼滿足指定的奇偶性要求。

如果是採用奇校驗,在傳送每乙個位元組的時候另外附加一位作為校驗位,當實際資料中「1」的個數為偶數的時候,這個校驗位就是「1」,否則這個校驗位就是「0」,這樣就可以保證傳送資料滿足奇校驗的要求。在接收方收到資料時,將按照奇校驗的要求檢測資料中「1」的個數,如果是奇數,表示傳送正確,否則表示傳送錯誤。

同理偶校驗的過程和奇校驗的過程一樣,只是檢測資料中「1」的個數為偶數。

兩個碼組對應位上數字的不同位的個數稱為碼組的距離,簡稱碼距,又稱海明(hamming)距離。例如00110和00100碼距為1,12345和13344碼距為2,caus和daun碼距為2。

碼距越大,糾錯能力越強,但資料冗餘也越大,即編碼效率低了。所以,選擇碼距要取決於特定系統的引數。

海明校驗碼

它的實現原理,是在k個資料位之外加上r個校驗位,從而形成乙個k+r位的新的碼字,使新的碼字的碼距比較均勻地拉大。把資料的每乙個二進位制位分配在幾個不同的偶校驗位的組合中,當某一位出錯後,就會引起相關的幾個校驗位的值發生變化,這不但可以發現出錯,還能指出是哪一位出錯,為進一步自動糾錯提供了依據。

公式2^r-1>=k+r(k為資料位,r為校驗位)

假設有r個校驗位,乙個位子有0或1兩種情況,r個位子就有2r種排列情況,能表示2r種狀態。其中乙個狀態用來表示正確(沒有錯誤發生)的這種情況。其餘的2r-1種狀態來表示錯誤發生在哪一位。總共有k+r位,所以2r-1一定要》=總位子k+r。

注意:海明校驗碼是放在2的冪次位上的,即「1,2,4,8,16,32······」

例:求1011的海明碼

第一步:求r的值(即校驗位數)

直接根據公式代入得:

2^r-1 ≥ 4 + r

2^r-r ≥ 5

得到r最小為3

所以海明碼的位數是4+3=7位

第二步:校驗位和資訊位對號入座

注意: 資訊位的位置分配是從高位到低位依次存放

注意: 海明校驗碼是放在2的冪次位上的

第三步:確定校驗位的值

校驗原則:被校驗的海明位的下標等於所有參與校驗該為的校驗位的下標之和

第四步將校驗碼校驗的資訊位的位置記錄下來:

r1: 3, 5, 7

r2: 3, 6, 7

r3: 5, 6, 7

然後做對應資訊位的異或運算(異或的運算法則為:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同為0,異為1)

r1: 1 xor 1 xor 1 = 1

r2: 1 xor 0 xor 1 = 0

r3: 1 xor 0 xor 1 = 0

代入**得到

迴圈冗餘校驗碼

在傳送端,先把資料劃分為組,假定每個組k個位元。現假定待傳送的資料m=101001(k=6)。crc運算就是在資料m後面新增供差錯檢驗用的n位冗餘碼,然後構成乙個幀傳送出去,一共傳送(k+n)位。在要傳送的資料後面加n位的冗餘碼

生成多項式------決定除數(共n位)----被除數左移(n-1位,全補0)-----過程進行異或處理------得到餘數------餘數為0則無差錯,否則出現錯誤

常用校驗碼(奇偶校驗碼 海明校驗碼 CRC校驗碼)

一 奇偶校驗碼 二 海明校驗碼 三 crc校驗碼 計算機系統執行時,各個部之間要進行資料交換.交換的過程中,會有發生誤碼的可能 即0變成1或1變成0 由於計算機的儲存是通過二進位制 來實現的的,誤碼會導致儲存的內容發生改變。為確保資料在傳送過程正確無誤,常使用檢驗碼.我們常使用的檢驗碼有三種.分別是...

奇偶校驗碼 迴圈冗餘校驗碼是什麼?

為什麼有校驗碼的存在?計算機系統執行時,各個部之間要進行資料交換.交換的過程中,會有發生誤碼的可能 即0變成1或1變成0 由於計算機的儲存是通過二進位制 來實現的的,誤碼會導致儲存的內容發生改變。為確保資料在傳送過程正確無誤,常使用檢驗碼。一 奇偶校驗碼 奇偶校驗碼是奇校驗碼和偶校驗碼的統稱.它們都...

校驗碼 奇偶校驗碼

1.奇偶校驗碼 通過在編碼中增加一位校驗位來使編碼中1的個數為奇數或者偶數,校驗位可以在原編碼的前面或者後面加。通過加入校驗位後的1個數是奇數還是偶數,可分為兩種 奇校驗 1的個數為奇數 偶校驗 1的個數為偶數 下圖為奇校驗和偶校驗的設定方法。例如 m的ascii碼77,二進位制表示為0100110...