校驗碼
奇偶校驗法、海明校驗法、CRC校驗法
1.奇偶校驗法
如果采用奇校驗,在傳送每一個數據(一般是1個字節)的時候另外附加一位作為校驗位,當實際數據中1的個數為偶數的時候,這個校驗位就是1.否則,這個校驗位就是0,這樣就可以保證傳送數據滿足奇校驗的要求。在接收方收到數據時,將按照奇校驗的要求檢測數據中1的個數,如果是奇數,表示傳送正確。否則,表示傳送錯誤。
偶校驗的過程和奇校驗的過程一樣,只是檢測數據中1的個數為偶數。當實際數據中1的個數為偶數的時候,這個校驗位就是0,否則這個校驗位就是1.這樣,就可以保證傳送數據滿足偶校驗的要求。在接收方收到數據時,將按照偶校驗的要求檢測數據中1的個數,如果是偶數個1,表示傳送正確。否則,表示傳送錯誤。
2.海明校驗法
和奇偶校驗不同之處在於海明碼采用多位校驗碼的方式,在信息數據位中合理加入校驗位,將碼距均勻拉大,校驗位中的每一位都對不同的信息數據位進行奇偶校驗,通過合理地安排每個校驗位對原始數據進行校驗位組合,可以達到發現錯誤,糾正錯誤的目的。
校驗公式:
海明碼是利用在k個數據位設置r個校驗位,構成一個n=k+r位的碼字,然后用r個監督關系式產生的r個校正因子來區分無錯和在碼字中的n個不同位置的一位錯。它必需滿足關系式:2r≥n+1 或 2r≥k+r+1。(2的校驗位次方>=數據位+校驗位+1)
海明校驗碼是在n個數據位之外增設k個校驗位,從而形成一個k+n位的新的碼字, 使新的碼字的碼距比較均勻地拉大。n與k的關系是(1)。
(1)A.2k - l≥n + k B.2n - 1≤ n + k C.n = k D.n-1≤k
選(A)
3.CRC校驗法
循環冗余檢驗碼簡稱CRC碼,由於其實現的原理十分易於用硬件實現,因此廣泛地應用於計算機網絡上的差錯控制。而且由於它采用的是模二除進行驗算,因此十分適合於以串行同步方式傳送數據塊。
而CRC的考查點主要有3個:
常見的CRC應用標准;
計算CRC校驗碼;
驗算一個加了CRC校驗的碼是否有錯誤;
(1)常見的CRC標准及應用歸納如表1-4所示:
(2)計算CRC校驗碼
在CRC碼中,編碼是由K位信息碼,加上R位的校驗碼組成。要計算CRC校驗碼,需根據CRC生成多項式進行。
①使用多項式G(x)=x^5 + x^4 + x +1,對報文10100110進行CRC編碼,則編碼后的報文是什么?
方法與步驟:
步驟1:對報文10100110,在末尾添加所給多項式的最高次階個0,如本題為x^5,則添加5個0,變為:1010011000000。
步驟2:由多項式G(x)=x^5 + x^4 + x +1,得其階數為1的二進制編碼為:110011。
步驟3:步驟1中求得的1010011000000對步驟2中求得的110011進行模二除法,所得到的余數即為校驗碼,把校驗碼添加在原報文尾部即為所求的編碼報文1010011011000,具體如下:
注意:
余數的位數一定要是比除數位數只能少一位,哪怕前面位是0,甚至是全為0(附帶好整除時)也都不能省略
②原始報文為11001010101,其生成多項式為X4+X3+X+1.計算編碼后的報文。
步驟1:對報文11001010101,在末尾添加所給多項式的最高次階個0,則添加4個0,添加后的報文為110010101010000
步驟2:由多項式X4+X3+X+1,得其階數為1的二進制編碼為:11011
步驟3:計算
如圖,計算一定要比除數小一位,即使補0,將0011添加到原始報文的后面,就是結果110010101010011.
(3)檢查信息碼是否有CRC錯誤
要想檢查信息碼是否出現了CRC錯誤的計算很簡單,只需用待檢查的信息碼做被除數,除以生成多項式,如果能夠整除就說明沒有錯誤,否則就表示出錯了。另外要注意的是,當CRC檢查出現錯誤時,它是不會進行糾錯的,通常是讓信息的發送方重發一遍。
①已知道接收到的CRC編碼,求原編碼或判斷是否出錯,如:已知G(x)=x^5 + x^4 + x +1,接收的為1010011011001,問是否出錯?
如上的CRC編碼是錯誤的。
例:以下關於海明碼的敘述中,正確的是(6)。
A.海明碼利用奇偶性進行檢錯和糾錯
B.海明碼的碼距為1
C.海明碼可以檢錯但不能糾錯
D.海明碼中數據位的長度與校驗位的長度必須相同
海明碼既可檢錯又可糾錯
例:己知數據信息為 16 位,最少應附加(5)位校驗位,才能實現海明碼糾錯。
A.3 B.4 C.5 D.6
根據公式 2的k次方 ≥ n+k+1 , n=16 則 K=5