循環冗餘校驗演算法
㈠ 什麼叫循環冗餘校驗
什麼叫循環冗餘校驗
循環冗餘校驗即循環冗餘檢查。灶則
循環冗餘檢查(CRC)是一種數據傳輸檢錯虧神功能,對數據進行多項式計算,並將得到的結果附在幀的後面,接收設備也執行類似的演算法,以保證數據傳輸的正確性和完銷辯虧整性。若CRC校驗不通過,系統重復向硬碟復制數據,陷入死循環,導致復制過程無法完成。出現循環冗餘檢查錯誤的可能原因非常多,硬體軟體的故障都有可能。
㈡ 循環冗餘校驗(CRC)碼
與海明校驗碼類似,CRC碼也是數據通訊中常用的校驗方式。
CRC 演算法的基本思想是將傳輸的數據當做一個位數很長的數。將這個數除以另一個數。得到的余數作為校驗數據附加到原數據後面。
與海明校驗碼數據位和校驗位穿插不同,CRC碼中,校驗位(R位)在信息位(K位)後面
以一個慎碧高題目為例:設待校驗的數據為。D8~D1 = 10101011,若採用CRC,且生成多項式為 10011,則其 CRC 碼為:
這里首先要注意題目中的一個表述——「多項式」,該題目中寫作「10011」,在有的題目中往往寫作「x^4+x+1」
首先,在數據位後加 多項式最高冪次 個0,比如這里的多項式最高次項為x^4,那就在數據位後加四個0,變成:101010110000,作為被除數
然後,將多項式 10011 作為除數進行斷除。需要注意的是,圖中所框的部分,對應位只做xor運算,也就是做減法但不影響其他位
最後得到的余數:1010,即是校驗位。那麼寬尺整個CRC碼為:10101011 1010
以上一節例題為例,假設收到的CRC碼變成了10001011 1010,第10位(右邊為低位)發生了錯誤。
現在嘗試慧嫌用CRC碼與多項式 10011 進行短除:
得到余數為 1010(2) = 1 8+1 2 = 10(10) ,即第10位發生錯誤,只需要反轉第10位的值,便可獲得正確的值