當前位置:成語大全網 - 書法字典 - CRC校驗算法

CRC校驗算法

在代數編碼理論中,壹個代碼組被表示為壹個多項式,代碼組中的每個符號都被視為該多項式的系數。例如,1100101表示1x 6+1x 5+0x 4+0 X3+1 X2+0x+1。

設編碼前的原始信息多項式為P(x),P(x)的最高次冪加上1等於k;生成多項式為G(x),G(x)的最高次冪等於r;CRC多項式為r(x);具有CRC的編碼信息多項式是T(x)。

發送方的編碼方法:將P(x)乘以xr(即相應的二進制碼序列左移R位),然後除以G(x),余數為R(x)。用公式表示為T(x)= xrP(x)+R(x)。

接收機的解碼方法:用T(x)除以G(x)得到壹個數。如果余數為0,則表示傳輸沒有錯誤,否則表示傳輸錯誤。

例如,設信息碼為1100,生成多項式為1011,即P(x)= x3+x2,G(x)= x3+x+1,計算CRC的過程如下。

xrp(x)= x3(x3+x2)= X6+X5g(x)= x3+x+1,即r(x)= x .註意G(x)的最高冪r=3,CRC為010。

如果使用垂直除法(計算機的模2),計算過程如下

1110-1011/11000000(1100左移3位)。1011-110 1011-1010 10 1010101011-001000-06545

如果傳輸是正確的,

t(x)=(X6+X5+x)/G(x)=,G(x)=無余數。回頭看上面的垂直除法,如果被除數是1100010,很明顯可以除以第三個1的商。

上述計算過程有助於我們理解CRC的概念。但直接編程實現上述算法不僅繁瑣,而且效率低下。實際上,在工程中不會直接計算和驗證CRC。

下表列出了標準中的壹些CRC數據:

名稱生成多項式縮寫的應用示例*

CRC-4 x4+x+1 3國際電聯G.704

CRC-8 x8+X5+x4+1 31 ds 18b 20

CRC-12 x 12+x 11+x3+x2+x+1 80F

CRC-16 x 16+x 15+x2+1 8005 IBM SDLC

CRC-ITU * * x 16+x 12+X5+1 1021 ISO HDLC、ITU X.25、V.34/V.41/V.42、PPP-FCS、ZigBee

CRC-32 x32+x26+x23+...+x2+x+1 04c 11db 7 ZIP,RAR,IEEE 802 LAN/FDDI,IEEE 1394,PPP-FCS

CRC-32c x32+x28+x27+...+x8+X6+1 1 edc6f 41 SCTP

*生成多項式的最高冪項的系數固定為1,因此在速記公式中統壹去掉最高的1,例如04C11DB7實際上是104C11DB7。* *原名CRC-CCITT。國際電聯的前身是國際電報電話咨詢委員會。

備註:

(1)標準中指定了生成多項式。

(2)2)CRC校驗碼基於將比特串視為系數為0或1的多項式,並且k比特數據流可以被視為從k-1階到0階的關於X的k-1多項式的系數序列。使用這種編碼,發送方和接收方必須事先就生成多項式G(x)達成壹致,並且其高位和低位必須為1。為了計算M位幀M(x)的校驗和,基本思想是將校驗和添加到幀的末尾,以便具有校驗和的該幀的多項式可以除以G(x)。當接收方收到帶有校驗和的幀時,它會被G(x)刪除。如果有余數,則CRC校驗是錯誤的,只有沒有余數的校驗是正確的。