Ⅰ 請教一道CRC循環冗餘檢驗碼的計算題
crc用的是二進制除法,不能化為十進製做,相減時1-1=0,0-0=0,1-0=1,0-1=1不要借位
1110001100000/110011=10110110*110011+11010,所以11010是校驗碼。在重申一遍,把它看成小學時學的除法(就是除號寫得像「廠」一樣的方法,相減時用二進制加法(就是不帶進位的那種)不可以化為十進製做)
算了還是做給你看吧。
------------10110110
---------------------
110011/1110001100000
-------110011
------------------
---------101111
---------110011
------------------
----------111000
----------110011
------------------
------------101100
------------110011
------------------------
-------------111110
-------------110011
-------------------------
---------------11010
所以答案是11010
解出的R=0101(fcs)
輸出2^nM+fas=1001110111010101
唔感覺是這樣的
Ⅲ 冗餘碼的計算商怎麼求
冗餘碼的計算商方法如下。
在《計算機網路》這門課程中,對於循環冗餘碼CRC的計算需要用到模2除法。
模2除法的原則:
1.被除數的首位為1,則商為1;
2.被除數的首位為0,則商為0;
模2除法等同於按位異或,要保證每次除完首位都為0,才能右移;
計算時每次右移一位,當被除數的位數小於除數,其為除數。
Ⅳ 計算機網路,關於數據鏈路層差錯檢測的【循環冗餘演算法】
P應是由循環冗餘演算法規則算出來的,太久了,具體細節你再翻翻書。
Ⅳ CRC循環冗餘碼計算方法
CRC碼一般在k位信息位之後拼接r位校驗位生成。
例如:
假設使用的生成多項式是G(X)=X3+X+1。4位的原始報文為1010,求編碼後的報文。
解:
1、將生成多項式G(X)=X3+X+1轉換成對應的二進制除數1011。
2、此題生成多項式有4位(R+1)(注意:4位的生成多項式計算所得的校驗碼為3位,R為校驗碼位數),要把原始報文C(X)左移3(R)位變成1010 000
3、用生成多項式對應的二進制數對左移3位後的原始報文進行模2除(高位對齊),相當於按位異或得到的余位011,所以最終編碼為:1010 011
注意事項
是接受方和發送方的一個約定,也就是一個二進制數,在整個傳輸過程中,這個數始終保持不變。
在發送方,利用生成多項式對信息多項式做模2除生成校驗碼。在接收方利用生成多項式對收到的編碼多項式做模2除檢測和確定錯誤位置。
應滿足以下條件:
1、生成多項式的最高位和最低位必須為1。
2、當被傳送信息(CRC碼)任何一位發生錯誤時,被生成多項式做除後應該使余數不為0。
3、不同位發生錯誤時,應該使余數不同。
4、對余數繼續做除,應使余數循環。
Ⅵ 已知信息碼110011,生成多項式G(X)=X4+X3+1.求循環冗餘碼和碼字
答:已知K(X) = X 5 + X 4+ X + 1,G(X) = X 4 + X 3 + 1
由此可知 r = 4,冗餘碼位數為4
R(X) = K(X) * X r / G(X)
=(X 5 + X 4 + X + 1)* X4 /(X 4 + X 3+ 1)
=(X 9 + X 8 + X 5+ X 4)/(X 4+ X 3 + 1)
通過二進制除法計算得知:冗餘碼為1001,R(X) = X 3 + 1。
T(X) = K(X) * X r + R(X)
= X 9 + X 8+ X 5 + X 4 + X 3 + 1
因此要發送的碼字為1100111001。
Ⅶ 計算冗餘碼
FJNU.1240Description
計算機網路中採用循環冗餘碼來校驗數據的正確性。其原理是:發送方計算出待發送的二進制數據的循環冗餘碼,並隨同原數據一起發送到接收方;接收方通過重新計算接收到的數據的循環冗餘碼,並和收到的循環冗餘碼進行比較,如果兩者相同則可判定所收到的數據是正確的,否則說明數據是錯誤的。其中計算二進制數據的循環冗餘碼的計算過程如下:
>>協議事先約定一個二進制生成表達式,本題設為10011;
>>將待發送的二進制數據串的末尾加4個0;
>>將補上0的數據串按模2除法除於生成表達式,取余數;
>>該余數就是該二進制數據串的循環冗餘碼。
例如:
數據串為:1101011011
生成表達式為:10011
循環冗餘碼為1110
計算過程如下:
根據上述的計算方法,請編寫一個循環冗餘碼計算程序,假設二進制數據串的長度不超過20位,生成表達式固定為10011。
Input
輸入的第一行含一個正整數k (1<=k<=10),表示測試例的個數。後面緊接著k行,每行對應一個測試例,含一個N位二進制串(1<=N<=20),代表數據。
Output
每個測試例對應一行輸出,含一個5位二進制串,表示循環冗餘碼。
Sample Input
2
1101011011
10101010
Sample Output
01110
01001
Source
福建師范大學第三屆程序設計比賽網上預賽
My Program
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄它是華麗的分隔線
【題意簡述】
對於輸入的二進制數,在末尾加上4個0後用10011對其進行模2除法。並輸出最後的結果(5位二進制碼)。
【粗略分析】
由於C++中沒有二進制的數據類型,因此採用字元串記錄。
觀察運算圖可知,每次都取前5位對它進行模2除法。我們可以設定一個i = 0 to n-5,用來計算每一步。
我們還可以觀察出,每次只有第i位為1時才會進行運算。所以我們加一個判定m[j]=='1'時才計算。
因為固定除數都為10011,我們直接將它列為數組,i=1 to 5 進行模2並存儲回字元數組即可。
【C++源代碼】
簡單地模擬一下計算過程就可以了。
Ⅷ 循環冗餘校驗碼怎麼算
循環冗餘校驗碼的計算方法:
編碼原理:
現假設有:有效信息:M;
除數G(生成多項式)有:M/G=Q+R/G;
此時,可選擇R作為校驗位,則MR即為校驗碼。
校驗原理:(M-R)/G=Q+0/G
說明:以接收到的校驗碼除以約定的除數,若余數為0,則可認為接收到的數據是正確的。
例:有效信息1101,生成多項式樣1011
循環校驗碼解:
有效信息1101(k=4),即M(x)=x3+x2+x0,生成多項式1011(r+1=4,即r=3);
即G(x)=x3+x1+x0,M(x)·x3=x6+x5+x3,即1101000(對1101左移三位);
M(x)·x3/G(x)=1101000/1011=1111+001/1011即1010的CRC是:1101001。
計算圖文如下: