校驗之:海明碼校驗、奇偶校驗


1、奇偶校驗碼

奇偶校驗通過在編碼中增加一個校驗位來使編碼中的1的個數為奇數(奇校驗)或者偶數(偶校驗),從而使碼距變為2.對於奇校驗,它可以檢測代碼中奇數位出錯的編碼,但不能發現偶數位出錯的情況。既當合法編碼中奇數位出現錯誤。也就是1變成0或者0變成1,其編碼的奇偶性就發生了變化,從而發現錯誤。但是這種校驗只能發現出現了錯誤但是不知道具體是哪一位發生了錯誤。

8421碼的奇偶校驗碼

   十進制數       8421 BCD碼         帶奇校驗位的8421碼        帶偶校驗位的8421碼    
0 0000 0000  1 0000  0
1 0001 0001  0 0001  1
2 0010 0010  0 0010  1
3 0011 0011  0 0011  0
4 0100 0100  1 0100  1
5 0101 0101  0 0101  0
6 0110 0110  1 0110  0
7 0111 0111  0 0111 1
8 1000 1000  0 1000  1
9 1001 1001  1 1001  0

常用的奇偶校驗有三種:水平奇偶校驗,垂直奇偶校驗校驗和水平垂直奇偶校驗。

水平奇偶校驗:對每一種數據的編碼添加校驗位,使信息位與校驗位處於同一行

垂直奇偶校驗:這種校驗將數據分為若干組,一組一行,整齊排列,再加上一行校驗位,針對每一列采樣奇校驗或偶校驗。

對32位數據:10100101  00110110  11001100 10101011 進行校驗:

        編碼分類                垂直奇校驗                垂直偶校驗        
數據

10100101

00110110

11001100

10101011

10100101

00110110

11001100

10101011

校驗位 00001011 11110100

就是這個意思:--------------------------------------------------------------------------------------------------------------

 

水平校驗與垂直水平校驗都類似。

2.海明碼

海明碼也是利用奇偶校驗和糾錯校驗的方法,海明碼的構成是:在數據位之間插入k個校驗位,通過擴大碼距來時間檢查和糾錯。例如:對於8位的數據,需要4個校驗位來進行校驗。如,令數據位:D7、D6、D5、D4、D3、D2、D1、D0和校驗位位:P4、P3、P2、P1。則編碼位置:

H12     H11    H10    H9    H8    H7    H6    H5    H4    H3    H2    H1   

D7     D6     D5     D4      P4      D3     D2     D1    P3     D0     P2    P1

校驗碼的設置位置在2^i的位置上。每個校驗位只校驗數據中位置號的二進制編碼和自身位置號的二進制編碼相匹配的數據:

即如下圖所示:

 

因此校驗關關系為:

P1偶校驗:P1、D0、D1、D3、D4、D6

即:P1=D0⊕D1⊕D3⊕D4⊕D6

P2偶校驗:P2、D0、D2、D3、D5、D6

即:P2=D0⊕D2⊕D3⊕D5⊕D6

P3偶校驗:P3、D1、D2、D3、D7

即:P3=D1⊕D2⊕D3⊕D7

P4偶校驗:P4、D4、D5、D6、D7

即:P4=D4⊕D5⊕D6⊕D7

海明碼的錯誤檢測也非常簡單,對使用海明碼的數據進行如下計算即可: 

G1=P1⊕D0⊕D1⊕D3⊕D4⊕D6

G2=P2⊕D0⊕D2⊕D3⊕D5⊕D6

G3=P3⊕D1⊕D2⊕D3⊕D7

G4=P4⊕D4⊕D5⊕D6⊕D7

對於所得的值,若采用偶校驗,則全為0表示接受的數據無誤(奇校驗則全為1)當G4G3G2G1不全為0,說明發生了錯誤,而且是G4G3G2G1的十進制值指出了錯誤的位置:如:G4G3G2G1=1010,則說明H10(D5)出了問題,將其取反便可糾正。

 

 

設數據01101001,采用四個校驗位求其偶校驗的海明碼:

0    1    1    0    1    0    0    1

D7 D6 D5  D4  D3  D2  D1  D1

P1=D0⊕D1⊕D3⊕D4⊕D6=1⊕0⊕1⊕0⊕1=1

P2=D0⊕D2⊕D3⊕D5⊕D6=1⊕0⊕1⊕1⊕1=0

P3=D1⊕D2⊕D3⊕D7=0⊕0⊕1⊕0=1

P4=D4⊕D5⊕D6⊕D7=0⊕1⊕1⊕0=0

所以校驗的海明碼為:

 

 

 


免責聲明!

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



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