Ⅰ 關於循環冗餘檢驗運算中除數的問題
假設使用的生成多項式是G(x)=x3+x+1。4位的原始報文為1010,求編碼後的報文。
解:
1、將生成多項式G(x)=x3+x+1轉換成對應的二進制除數1011。
2、此題生成多項式有4位(R+1),要把原始報文C(x)左移3(R)位變成101,000,0
3、用生成多項式對應的二進制數對左移4位後的原始報文進行模2除:
1001--商
1010000
1011--除數
1000
1011
011--余數(校驗位)
編碼後的報文(CRC碼):
1010000
+ 011
101,001,1
例如: g(x)=x4+x3+x2+1,(7,3)碼,信息碼110產生的CRC碼就是:
101
11101 | 110,0000(就是110,0000/11101)
111 01
1 0100
1 1101
1001
余數是1001,所以CRC碼是110,1001
CRC的和糾錯
在接收端收到了CRC碼後用生成多項式為G(x)去做模2除,若得到余數為0,則碼字無誤。若如果有一位出錯,則余數不為0,而且不同位出錯,其餘數也不同。可以證明,余數與出錯位的對應關系只與碼制及生成多項式有關,而與信息位無關
Ⅱ 關於計算機網路的crc計算
我們知道,一台主機向另外一台主機發送報文的時候,需要一層層經過自己的協議棧進行數據封裝,到達最後一層(四層協議的網路介面層)時需要在幀尾部添加FCS校驗碼(通過CRC演算法得出)。當對端主機收到時,在接收端同樣通過CRC演算法進行驗證,確認傳輸過程中是否出現錯誤。它只能確認一個幀是否存在比特差錯,但沒有提供解決措施。
循環冗餘校驗的原理
在發送端,先把數據劃分為組(即:一幀)。假定每組 k 個比特。
在每組後面,添加供差錯檢測用的 n 位冗餘碼一起發送。即:實際發送長度為:k+n 比特。
發送前雙方協商n+1位的除數P,方便接收方收到後校驗。
給K比特的數據添加除數減一個0(P-1)作為被除數,與第三步確定的除數做「模2除法」。得出的余數即FCS校驗序列,它的位數也必須是(P-1)。
將FCS校驗序列添加至K個比特位的後面發送出去。
接收方對接收到的每一幀進行校驗,若得出的余數 R = 0,則判定這個幀沒有差錯,就接受(accept)。若余數 R ≠ 0,則判定這個幀有差錯,就丟棄。
對「模2除法」進行說明:
「模2除法」與「算術除法」類似,但它既不向上位借位,也不比較除數和被除數的相同位數值的大小,只要以相同位數進行相除即可。模2加法運算為:1+1=0,0+1=1,0+0=0,無進位,也無借位;模2減法運算為:1-1=0,0-1=1,1-0=1,0-0=0,也無進位,無借位。相當於二進制中的邏輯異或運算。
計算示例
那麼接收方拿到的就是:101001001。再以它為被除數,1101為除數進行「模2除法」。
Ⅲ 計算機網路循環冗餘檢驗 中的除數怎麼來的
首先要知道CRC生成的多項式P(X)。除數的位數是P(X)最高次冪+1。P(X)每個冪數代表著除數從右到左第幾位為1,其餘的都為0,就得出除數了。比如P(X)=X^4+X^3+1,則除數個數為5,從右往左分別為0 1 2 3 4位,其中4,3,0位為1,其餘為0。除數為11001
Ⅳ 計算冗餘碼
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++源代碼】
簡單地模擬一下計算過程就可以了。
Ⅳ 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、對余數繼續做除,應使余數循環。
Ⅵ crc校驗中的除數是怎麼確定的啊
首先要知道CRC生成的多項式P(X)。除數的位數是P(X)最高次冪+1,從右往左分別為第0位1位2位3位4位...P(X)每個冪數代表著除數從右到左第幾位為1,其餘的都為0,比如P(X)=X^3+1就是第3位和第0位為1,其餘是0
這樣就得出除數了
Ⅶ 循環冗餘校驗碼怎麼算
循環冗餘校驗碼的計算方法:
編碼原理:
現假設有:有效信息: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。
計算圖文如下:
Ⅷ 關於計算機網路循環冗餘碼怎麼求求大神。、、
解出的R=0101(fcs)
輸出2^nM+fas=1001110111010101
唔感覺是這樣的
Ⅸ 如何求冗餘碼
二進制數據的循環冗餘碼的計算過程如下:
1.協議事先約定一個二進制生成表達式,本題設為110011;
2.將待發送的二進制數據串的末尾加5個0;
3.將補上0的數據串按模2除法除於生成表達式,取余數;
4.該余數就是該二進制數據串的循環冗餘碼。
生成多項式: G(x)=x5+x4+x+1 (r=5) ,生成碼: 110011
數據10101100 00000
由計算結果知冗餘碼是0101,碼字就是1100101。
********************************1 1 0 0 0 1 0 0
G(x)→1 1 0 0 1 1 ) 1 0 1 0 1 1 0 0 0 0 0 0 0←F(X)*Xr
**********************1 1 0 0 1 1 // G(x)
************************1 1 0 0 0 0 //補位
************************1 1 0 0 1 1 // G(x)
**************************0 0 0 1 1 0 0 0 0 //補位
*********************************1 1 0 0 1 1 // G(x)
***********************************0 0 0 1 1 0 0
循環冗餘碼:0 1 1 0 0
模2:
1-0 = 1
0-1 = 1
1-1 = 0
0-0 = 0
某循環冗餘碼的生成多項式為G(x)=x5+x4+x+1,則它對任意長度的信息位產生__5___位長的冗餘位,//因為最高位為x5
並可檢測出所有突發長度___小於等於5__位的突發錯誤。 //因為冗餘位長度為5
若信息位為10101100,採用此生成多項式產生冗餘位,加在信息位後形成的碼字是__C___.在讀出或接收端讀到的碼字中若不滿足某種規律則可判斷其必然有錯,例如:__D___ 和___E__就是出錯的碼字。
C的答案見上面的計算,
D___ 和___E使用上面的方法計算出循環冗餘碼,循環冗餘碼不是0 1 1 0 0就是出錯的碼字
Ⅹ 計算機網路,關於數據鏈路層差錯檢測的【循環冗餘演算法】
P應是由循環冗餘演算法規則算出來的,太久了,具體細節你再翻翻書。