CRC校驗原理與計算

2021-08-10 04:33:45 字數 1159 閱讀 1877

crc,(cyclic redundancy check),迴圈冗餘校驗。

1,crc的原理

crc校驗的原理在很多地方寫的都比較詳細,也比較複雜,但其本質就是一種校驗碼的計算方法。收、發雙方在通訊之前要約定好乙個多項式(介紹原理的地方也叫做生成多項式,其實就是一串二進位製碼,關於多項式跟二進位製碼的對應關係可以參考附錄1),通過資訊碼跟生成多項式做「模2除法」就能計算出校驗碼,當然,校驗碼的位數也是由生成多項式決定的(校驗碼位數=生成多項式對應二進位制串位數-1)。

常用的生成多項式有:ibm的sdlc(同步資料鏈路控制)規程中使用的crc-16,生成多項式g(x)= x16 + x15 + x2 +1(對應二進位制位元串為:11000000000000101);而在iso hdlc(高階資料鏈路控制)規程、itu的sdlc、x.25、v.34、v.41、v.42等中使用ccitt-16生成多項式g(x)= x16 + x15 + x5 +1(對應二進位制位元串為:11000000000100001)。

「模2除法」跟「算術除法」不同,它既不向上位借位,也不比較除數和被除數的相同位數值的大小,只是以相同位數做邏輯異或運算。模2加法運算為:1+1=0,0+1=1,0+0=0,無進製,也無借位;模2減法運算為:1-1=0,0-1=1,1-0=1,0-0=0,也無進製,無借位。

「模2除法」和「模2乘法」示例

2,crc的計算步驟

假設資訊碼是10110011,生成多項式約定為g(x) = x4 + x3 + 1,則對應的二進位制串為11001,所以需要計算的校驗碼位數為4位。

1)資訊碼左移4位,末尾補0,得到101100110000,這個數以「模2除法」的方式除以生成多項式11001,得到的餘數為0100,此即為crc校驗碼。

crc校驗碼計算示例

2)將計算得到的crc校驗碼0100,替換在資訊碼末尾補的4個0,得到101100110100,即為要傳送的最終資料。

3)在接收端,因為把模2除法的餘數加在了資訊碼的末尾,因此,在沒有通訊錯誤的情況下,收到的數是可以以「模2除法」的方式整除約定好的生成多項式的。這也就是crc校驗的原理。

附錄1,多項式跟二進位制數的對應關係:多項式的最高冪次對應二進位制數的最高位,以後各位對應多項式的各冪次,有此冪次項對應1,無此冪次項對應0

CRC校驗原理

crc校驗原理 1 迴圈校驗碼 crc碼 是資料通訊領域中最常用的一種差錯校驗碼,其特 徵是資訊字段和校驗欄位的長度可以任意選定。2 生成crc碼的基本原理 任意乙個由二進位制位串組成的 都可以和乙個系 數僅為 0 和 1 取值的多項式一一對應。例如 1010111對應的多項 式為x6 x4 x2 ...

CRC校驗原理

以下內容摘自筆者即將出版的最新著作 深入理解計算機網路 一書。本書將於12月底出版上市,敬請留意!本書原始目錄參見此文 5.3.2 迴圈冗餘校驗檢錯方案 上節介紹的奇偶校驗碼 pcc 只能校驗一位錯誤,本節所要介紹的迴圈冗餘校驗碼 crc 的檢錯能力更強,可以檢出多位錯誤。1.crc校驗原理 crc...

CRC校驗原理

基本概念 crc即迴圈校驗碼是資料通訊中最常用的一種差錯校驗碼。資訊欄位的長度和校驗碼的長度是任意的。基本原理 在k位資訊碼的後面加上r位校驗碼,整個長度是n位,n k r。給定乙個 n,r 碼,可以證明存在乙個最高次冪為r的多項式g x 根據g x 可以生成k位資訊的校驗碼,而g x 叫做這個cr...