CRC CRC推導(一)CRC簡介

2021-10-05 15:12:54 字數 425 閱讀 9888

crc是資料傳輸過程中的常見的一種校驗方式,由於其演算法簡單,而且出錯率極低,因而廣為使用。工作中使用crc演算法非常多,不過一般由於專案緊急,僅僅只會應用,具體為什麼這麼算不求甚解。本文將推導crc演算法,從最初的模二除法到crc優化、查表。

在推導crc演算法之前,看了很多其它人的講解,雖然有所啟發,但是大部分都沒有講到最關鍵的兩個地方:

模二除法新的資料是移位到

crc暫存器的最低位,為什麼現在的演算法都是異或高位?

crc查表的是怎麼推導過來的,**又是怎麼獲得?

後面會詳細講解整個推導過程,尤其是上面兩點。

crc演算法是從模二除法演化而來,目前校驗演算法有crc4、crc5、crc6、crc7、crc8、crc16、crc32、crc64等,其中常用的就是crc8、crc16、crc32和crc64.

下面我們先從模二除法開始講解

CRC32演算法詳細推導(1)

from 作為blog再次發出來,詳細描述一下crc32演算法的推導過程。crc 演算法的數學基礎就不再多囉嗦了,到處都是,簡單提一下。它是以 gf 2 多項式算術為數學基礎的,gf 2 多項式中只有乙個變數 x 其係數也只有 0 和 1 比如 1 x 6 0 x 5 1 x 4 0 x 3 0 x...

CRC32演算法詳細推導(3)

看起來我們已經得到 crc 32 演算法的最終形式了,可是 可是在實際的應用中,資料傳輸時是低位先行的 對於乙個位元組 byte 來講,傳輸將是按照 b1,b2,b8 的順序。而我們上面的演算法是按照高位在前的約定,不管是 reg還是 g x g32,g31,g1 b8,b7,b1 r32,r31,...

CRC CRC推導(三)位元組查表與半位元組查表

上節我們講到模二除法,模二除法的操作是按位進行,每次移動一位,然後計算,演算法要套2個迴圈,效率較低。由於異或運算有交換律和結合律。因此,我們再次看一下範例 傳送資料為0xcf16 1100111100010110b 多項式為0x11021 10001000000100001b 為例,結果如下 我們...