crc校驗演算法
『壹』 如何計算CRC校驗碼
我先給你舉個例子:
已知信息位為1100,生成多項式G(x) = x3+x+1,求CRC碼。
M(x) = 1100 M(x)*x3 = 1100000 G(x) = 1011
M(x)*x3 / G(x) = 1110 + 010 /1011 R(x) = 010
CRC碼為: M(x)*x 3+R(x)=1100000+010 =1100010
其原理是:CRC碼一般在k位信息位之後拼接r位校驗位生成。編碼步驟如下:
(1)將待編碼的k位信息表示成多項式 M(x)。
(2)將 M(x)左移 r 位,得到 M(x)*xr 。
(3)用r+1位的生成多項式G(x)去除M(x)*xr 得到余數R(x)。
(4)將M(x)*xr 與R(x)作模2加,得到CRC碼。
『貳』 如何計算CRC校驗位
在CRC計算時只用8個數據位,起始位及停止位,如有奇偶校驗位也包括奇偶校驗位,都不參與CRC計算。CRC計算方法是:1、 載入一值為0XFFFF的16位寄存器,此寄存器為CRC寄存器。2、 把第一個8位二進制數據(即通訊信息幀的第一個位元組)與16位的CRC寄存器的相異或,異或的結果仍存放於該CRC寄存器中。3、 把CRC寄存器的內容右移一位,用0填補最高位,並檢測移出位是0還是1。4、 如果移出位為零,則重復第三步(再次右移一位);如果移出位為1,CRC寄存器與0XA001進行異或。5、 重復步驟3和4,直到右移8次,這樣整個8位數據全部進行了處理。6、 重復步驟2和5,進行通訊信息幀下一個位元組的處理。7、 將該通訊信息幀所有位元組按上述步驟計算完成後,得到的16位CRC寄存器的高、低位元組進行交換8、 最後得到的CRC寄存器內容即為:CRC校驗碼。
『叄』 modbus中如何計算CRC效驗(人工計算)
在CRC計算時只用8個數據位,起始位及停止位,如有奇偶校驗位也包括奇偶校驗位,都不參與CRC計算。
CRC計算方法是:
1、 載入一值為0XFFFF的16位寄存器,此寄存器為CRC寄存器。
2、 把第一個8位二進制數據(即通訊信息幀的第一個位元組)與16位的CRC寄存器的相異或,異或的結果仍存放於該CRC寄存器中。
3、 把CRC寄存器的內容右移一位,用0填補最高位,並檢測移出位是0還是1。
4、 如果移出位為零,則重復第三步(再次右移一位);如果移出位為1,CRC寄存器與0XA001進行異或。
(3)crc校驗演算法擴展閱讀:
計算步驟為:
(1).預置 16 位寄存器為十六進制 FFFF(即全為 1) ,稱此寄存器為 CRC 寄存器;
(2).把第一個 8 位數據與 16 位 CRC 寄存器的低位相異或,把結果放於 CRC 寄
存器;
(3).檢測相異或後的CRC寄存器的最低位,若最低位為1:CRC寄存器先右移1位,再與多項式A001H進行異或;若為0,則CRC寄存器右移1位,無需與多項式進行異或。
(4).重復步驟 3 ,直到右移 8 次,這樣整個 8 位數據全部進行了處理;
(5).重復步驟 2 到步驟4,進行下一個 8 位數據的處理;
(6).最後得到的 CRC 寄存器即為 CRC 碼。
『肆』 crc校驗碼計算方法是什麼
已知信息位為1100,生成多項式G(x) = x3+x+1,求CRC碼。
M(x) = 1100 M(x)*x3 = 1100000 G(x) = 1011
M(x)*x3 / G(x) = 1110 + 010 /1011 R(x) = 010
CRC碼為: M(x)*x 3+R(x)=1100000+010 =1100010
其原理是:CRC碼一般在k位信息位之後拼接r位校驗位生成。編碼步驟如下:
(1)將待編碼的k位信息表示成多項式 M(x)。
(2)將 M(x)左移 r 位,得到 M(x)*xr 。
(3)用r+1位的生成多項式G(x)去除M(x)*xr 得到余數R(x)。
(4)將M(x)*xr 與R(x)作模2加,得到CRC碼。
(4)crc校驗演算法擴展閱讀:
CRC校驗碼計算詳解:採用CRC進行差錯檢驗,生成多項式為G(X)=X4+X+1,信息碼字為10110,則計算出的CRC校驗碼是:A. 0000 B. 0100 C. 0010 D.1111
符號表示假定:多項式和多項式的系數排列均用相同的符號表示,如
G(X)= X4+X+1
G(X)=10011
已知條件如下:
原碼字記做M(X),即:M(X) = 10110
生成多項式記做G(X),即:G(X) = 10011
G(X)的最高階數記做r,此處r = 4
『伍』 CRC碼的計算方法
給信息碼補5個0,然後去除多項式,余數就是較驗碼
『陸』 CRC16校驗碼如何計算
首先G(X)=X3+X+1可以得出G(x)=1011[G(x)中的1就是二進制第0位為1,X就是第一位為1,沒有X^2,所以第二位為0,X^3則第三位為1。所以就是1011]
M(x)=0011M(x)*x3=0011000
M(x)*x3/G(x)的余數是101所以R(X)=101
CRC碼為:M(x)*x3+R(x)=0011000+010=0011010
在計算機網路通信中
運用CRC校驗時相對於其他校驗方法就有一定的優勢。CRC可以高比例的糾正信息傳輸過程中的錯誤,可以在極短的時間內完成數據校驗碼的計算,並迅速完成糾錯過程,通過數據包自動重發的方式使得計算機的通信速度大幅提高,對通信效率和安全提供了保障。由於CRC演算法檢驗的檢錯能力極強,且檢測成本較低,因此在對於編碼器和電路的檢測中使用較為廣泛。
以上內容參考:網路-CRC
『柒』 CRC校驗的演算法有幾種
具體的找些參考資料吧,一兩句話也說不清楚
http://203.208.35.101/search?q=cache:-sMYoAuCJyAJ:www.powerprotocol.com.cn/CRC/crc_explain.pdf+CRC%E6%A0%A1%E9%AA%8C&hl=zh-CN&ct=clnk&cd=1&gl=cn&st_usg=ALhdy2_AJ0YjhnCWFMb5xtYPvXTzPgd_2Q
http://ke..com/view/575295.html
下面的還有程序實現:
http://www.dzkf.cn/html/qianrushixitong/2006/0905/529.html
http://chinaitpower.com/A200508/2005-08-07/186451.html
http://lunwen.eliu.info/js94.htm
『捌』 CRC校驗是怎麼算的
你這個是CRC16要實現校驗的話,你首先需要知道對方採用的是何種CRC公式不同的CRC公式 得到的校驗碼是不一樣的在知道公式的情況下做crc表,然後按照crc演算法,計算這8個位元組的整體crc如果傳輸沒有錯誤的話,最終的crc值是0也可以計算前六個的crc,然後和最後兩個位元組比較,效果是相同的。
『玖』 CRC32的計算方法
CRC的本質是模-2除法的余數,採用的除數不同,CRC的類型也就不一樣。通常,CRC的除數用生成多項式來表示。 最常用的CRC碼及生成多項式名稱生成多項式。
CRC-12:
(9)crc校驗演算法擴展閱讀
通常的CRC演算法在計算一個數據段的CRC值時,其CRC值是由求解每個數值的CRC值的和對CRC寄存器的值反復更新而得到的。這樣,求解CRC的速度較慢。通過對CRC演算法的研究,我們發現:一個8位數據加到16位累加器中去,只有累加器的高8位或低8位與數據相作用,其結果僅有256種可能的組合值。
因而,我們可以用查表法來代替反復的運算,這也同樣適用於CRC32的計算。本文所提供的程序庫中,函數crchware是一般的16位CRC的演算法。mk-crctbl用以在內存中建立一個CRC數值表。