CRC冗餘校驗原理詳解

2021-09-12 12:47:43 字數 1224 閱讀 2298

在進行crc原理解析之前,我們需要先了解什麼是模二除法,因為在crc校驗中使用的是模二除法,而非算術除法。

以120/9為例,比較一下兩種除法的區別:

120的二進位制:0b01111000

9的二進位制: 1001

算術除法: 120/9 = 13餘3

--------- 1101 除數

1001)1111000

。。。。。。0011 餘數

模二除法:120/9 = 14餘6

模二除法,既不向上借位,也不比較除數和被除數的相同位數值的大小。

模二加法:1+1=0,1+0=1,0+0=0

模二減法:1-1=0,1-0=1,0-1=1,0-0=0

模二的加減法等同於做異或(xor)

計算過程:

在學習crc校驗時,一定要明白模二除法,crc校驗是基於模二除法的。

crc演算法就是把傳輸資料當作乙個位數很長的數,然後將這個數模二除另乙個數(這個數對應的就是crc的多項式(poly)),其所得的餘數即為crc校驗碼。

舉個例子來說,傳輸資料為:10110011

除的另乙個數為(我們選擇的多項式):11001 (長度為5)

我們需要在傳輸資料後面補(多項式長度-1)個0

即: 101100110000

然後用這個資料對11001模二除,取得餘數0100,這個0100即是crc校驗碼。

我們會發現,crc校驗碼的長度為我們所選多項式的長度-1,同時也是我們所需要補0的長度。

任意乙個二進位制數,都可以對應乙個多項式。如:10011 對應x4+0x3+0x2+x1+1,簡化一下就是:x4+x1+1。(我們也會發現這就是crc-4)

所以就產生的了標準的crc生成多項式:

另外我們或許會有疑問,為何標準的多項式這樣選擇,而不是選擇其他的多項式?

這是因為不同的多項式校驗的效果不一,特別的多項式能夠明顯減小錯誤率。

迴圈冗餘校驗 CRC校驗

一 crc校驗概念 即迴圈冗餘校驗碼 cyclic redundancy check 是資料通訊領域中最常用的一種查錯校驗碼,迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。其特徵是資訊字段和...

迴圈冗餘校驗CRC

網上搜到的內容不全面,維基百科講的比較好,原理很清楚傳送門 其實對於程式設計師來講,不用太在意它的數學原理,另外生成碼的選擇不是隨意的,這可能影響到校驗的效能。注意其中的加法不進製,減法不借位,類似是異或邏輯。關於怎樣產生crc,有這樣乙個演算法 下面為crc的計算過程 1 設定crc暫存器,並給其...

CRC迴圈冗餘校驗

crc校驗原理 crc校驗原理看起來比較複雜,好難懂,因為大多數書上基本上是以二進位制的多項式形式來說明的。其實很簡單的問題,其根本思想就是先在要傳送的幀後面附加乙個數 這個就是用來校驗的校驗碼,但要注意,這裡的數也是二進位制序列的,下同 生成乙個新幀傳送給接收端。當然,這個附加的數不是隨意的,它要...