CRC的本質是模-2除法的餘數,採用的除數不同,CRC的型別也就不一樣。通常,CRC的除數用生成多項式來表示。最常用的CRC碼及生成多項式名稱生成多項式。
CRC-12:
CRC-16:
CRC-CCITT:
CRC-32:
CRC校驗實用程式庫在資料儲存和資料通訊領域,為了保證資料的正確,就不得不採用檢錯的手段。在諸多檢錯手段中,CRC是最著名的一種。CRC的全稱是迴圈冗餘校驗。
通常的CRC演算法在計算一個數據段的CRC值時,其CRC值是由求解每個數值的CRC值的和對CRC暫存器的值反覆更新而得到的。這樣,求解CRC的速度較慢。通過對CRC演算法的研究,我們發現:一個8位數據加到16位累加器中去,只有累加器的高8位或低8位與資料相作用,其結果僅有256種可能的組合值。
因而,我們可以用查表法來代替反覆的運算,這也同樣適用於CRC32的計算。本文所提供的程式庫中,函式crchware是一般的16位CRC的演算法。mk-crctbl用以在記憶體中建立一個CRC數值表。