CRC 生成多項式

2021-07-15 23:24:52 字數 1367 閱讀 1683

是接受方和傳送方的乙個約定,也就是乙個二進位制數,在整個傳輸過程中,這個數始終保持不變。

在傳送方,利用生成多項式對資訊多項式做模2除生成校驗碼。在接受方利用生成多項式對收到的編碼多項式做模2除檢測和確定錯誤位置。

應滿足以下條件:

a、生成多項式的最高位和最低位必須為1。

b、當被傳送資訊(crc碼)任何一位發生錯誤時,被生成多項式做模2除后應該使餘數不為0。

c、不同位發生錯誤時,應該使餘數不同。

d、對餘數繼續做模2除,應使餘數迴圈。

將這些要求反映為數學關係是比較複雜的。但可以從有關資料查到常用的對應於不同碼制的生成多項式如圖9所示: n

k碼距d

g(x)多項式

g(x) 7

4 3x3+x+1

1011 7

4 3x3+x2+1

1101 7

3 4x4+x3+x2+1

11101 7

3 4x4+x2+x+1

10111 15

11 3

x4+x+1

10011 15

7 5x8+x7+x6+x4+1

111010001 31

26 3

x5+x2+1

100101 31

21 5

x10+x9+x8+x6+x5+x3+1

11101101001 63

57 3

x6+x+1

1000011 63

51 5

x12+x10+x5+x4+x2+1

1010000110101

1041

1024

x16+x15+x2+1

11000000000000101

圖9 常用的生成多項式

例如第一項可以寫成:x3+x2+x+1  有冪次就為1 沒有冪次就為0 首尾一定要是1 

所以  1 0 1 1

一道計算題:

已知資訊位為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碼。

MATLAB多項式及多項式擬合

多項式均表示為陣列形式,陣列元素為多項式降冪係數 1.polyval函式 求多項式在某一點或某幾個點的值.p 1,1,1 x 2 x 1 x 1,0,1 y polyval p,x 另外求函式在某一點或某幾個點的值可以用函式feval.x 1,0,1 y feval x exp x x 注意用的乘法...

數學 多項式 多項式求逆

多項式求逆 前置知識 ntt 給定乙個多項式 f left x right 求乙個多項式 g left x right 使得 f left x right g left x right equiv 1 left bmod 998244353 right 考慮遞迴求解。假定現在已經求出了 g 0 le...

多項式與生成函式複習

秦九邵演算法,多點求值 高斯消元,插值 任意乙個n次多項式,都能找到n個根,複數是代數閉域 對於範德蒙德矩陣,求解它的逆矩陣 a a det ai naa detai n aa de tain 乘積的組合意義 字首和與差分 插板法或者廣義二項式定理 斐波那契數列的ogf f x xf x x2f x...