奇偶效驗碼和海明碼


奇偶效驗碼

奇偶校驗碼是奇校驗碼和偶校驗碼的統稱。它們都是通過在要校驗的編碼上加一位校驗位組成。

奇校驗碼:加上校驗位后,編碼中 1 的個數為奇數個

偶校驗碼:加上校驗位后,編碼中 1 的個數為偶數個

 

水平奇偶效驗碼

例:

原編碼 奇校驗 偶校驗
0000 0000 1 0000 0
0010 0010 0 0010 1
1100 1100 1 1100 0
1010 1010 1 1010 0

 

 

 

 

 

垂直奇偶效驗碼

例:

有32位數據 10100101 00110110 11001100 10101011

  垂直奇校驗 垂直偶校驗
 原編碼 10100101 10100101
00110110 00110110
11001100  11001100 
10101011 10101011
 校驗碼 00001011 11110100

 

 

 

 

 

 

缺點:

只能檢測出奇數位出錯,且無法檢測出哪位出錯。

設原編碼為0000,傳輸的過程中變成了1001。若使用奇校驗,原編碼是00001,傳輸過后會變成10011,1仍然是奇數個,無法校驗;如果使用偶校驗,原編碼是00000,傳輸過后會變成10010,1仍然是偶數個,同樣無法校驗。

 


 

海明碼

海明碼也是利用奇偶性來校驗數據的,它是一種多重奇偶校驗檢錯系統。通過在數據位之間插入k個校驗位,來擴大碼距,從而實現檢錯和糾錯。

注:碼距指兩個碼組對應位上數字的不同位的個數。

假設數據位數為m,向其(2的冪次方,如1,2,4,8……)各位插入k位校驗碼,且滿足m+k+1<2k

例:101101100,求海明碼。

101101100,9+k+1<2k

解得,k=4,即校驗碼位數為4位

 

位置 1 2 3 4 5 6 7 8 9 10 11 12 13
原始信息位     1   0 1 1   0 1 1 0 0
用到的校驗碼 校驗位1   校驗位2   1+2=3  校驗位3   1+4=5  2+4=6  1+2+4=7  校驗位4   1+8=9 2+8=10  1+2+8=11  4+8=12  1+4+8=13

 

 

 

 

即得每個校驗位校驗了哪些位置:

  bit1=3,5,7,9,11,13

  bit2=3,6,7,10,11

  bit4=5,6,7,12,13

  bit8=9,10,11,12,13

 通過原始信息位,對各位進行模2運算(異或:相同為0,不同為1)得:

  bit1=1,0,1,0,1,0=1

  bit2=1,1,1,1,1=1

  bit4=0,1,1,0,0=0

  bit8=0,1,1,0,0=0

得校驗碼分別為:1,1,0,0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM