實驗九基于crc編碼的檢錯程序的實現(xiàn)

實驗九基于crc編碼的檢錯程序的實現(xiàn)

ID:12775553

大小:170.00 KB

頁數(shù):6頁

時間:2018-07-19

實驗九基于crc編碼的檢錯程序的實現(xiàn)_第1頁
實驗九基于crc編碼的檢錯程序的實現(xiàn)_第2頁
實驗九基于crc編碼的檢錯程序的實現(xiàn)_第3頁
實驗九基于crc編碼的檢錯程序的實現(xiàn)_第4頁
實驗九基于crc編碼的檢錯程序的實現(xiàn)_第5頁
資源描述:

《實驗九基于crc編碼的檢錯程序的實現(xiàn)》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫

1、云南大學軟件學院實驗報告課程:計算機網絡原理實驗任課教師:劉春花,劉宇姓名:學號:專業(yè):成績:實驗九、鏈路層實驗——基于CRC編碼的檢錯程序的實現(xiàn)實驗報告一、實驗目的1、通過實驗,掌握CRC編碼和解碼的原理。2、掌握基于CRC編碼的差錯檢測技術。二、實驗指導現(xiàn)在計算機網絡廣泛采用的差錯檢測技術是基于CRC(cyclicredundancycheck)循環(huán)冗余檢測編碼,CRC也稱為多項式編碼(polynomialcode),CRC算法非常容易用硬件實現(xiàn)。CRC編碼操作如下:對給定的數(shù)據(jù)D,發(fā)送者選擇r個附加位,追加到D的末尾,形成d+r位的新位型,該位型正好能被G模2除盡。其中,G稱為生成器。C

2、RC編碼算法實現(xiàn):1、選擇生成多項式G,其最高次方為r,即r+1位的二進制位串2、計算D·2r,即在數(shù)據(jù)D后面補r個0,構成d+r位的位串3、按模2除法求(D·2r/G)的余數(shù)R,即:4、從D·2r中模2減去R,得到新的數(shù)據(jù)T,即加了CRC的幀三、實驗要求1、設置一個d位的數(shù)據(jù)D,r+1位的多項式G,生成CRC碼,并把此CRC碼作為數(shù)據(jù)幀進行傳送。2、編寫兩個子程序,分別實現(xiàn)CRC編碼和CRC解碼,在主函數(shù)中對子程序進行調用。解碼子程序應能根據(jù)解碼情況判斷出接收到的數(shù)據(jù)幀是否出錯,并給出提示。3、要求分別以正確和錯誤的數(shù)據(jù)來檢驗此檢錯程序。4、將編寫程序的源代碼加必要注釋和程序運行結果一起填入

3、實驗報告中。提示:1、編寫程序時數(shù)據(jù)直接用二進制數(shù),可能用到位操作符^(異或)和<<(左移)。2、在設置錯誤的編碼時,錯誤位數(shù)最好不要超過r+1位。四、運行結果:正確的數(shù)據(jù):錯誤的數(shù)據(jù):經驗證,結果正確。五、實驗小結:通過本次要求實現(xiàn)CRC編碼和解碼程序的編寫實驗,加深了對CRC編碼和解碼的原理的了解,掌握了CRC編碼的算法。另外在實驗中還有一些細節(jié)的地方需要改進,實驗代碼雖然相對比較少,但在實驗過程中,還是出現(xiàn)了一些問題,比如對C語言的某些語法知識點有些生疏。想要更好地學習各種算法知識,編程是最基礎的,今后編程方面還需要加強。六、程序代碼:#include#include<

4、stdlib.h>voidcrc(intA[],intG[],intx,intn)//編碼程序{inti,j,k;printf("tt");for(k=0;k<=x-1;k++)printf("%d",A[k]);//輸出補后的數(shù)for(i=0;i<=x-n+1;i++){if(A[i]==1)//當首位為時進行異或{for(j=0;j<=n-1;j++){if(A[i+j]==G[j])A[i+j]=0;//異或運算,相同為,不同為elseA[i+j]=1;}printf("tt");//輸出每次異或后的結果for(k=0;k<=x-1;k++)printf("%d",A[k

5、]);//輸出余數(shù)}}}voidcrl(intM[],intA[],intm,intn)//檢驗解碼程序{intk=0,i;for(i=0;i<=m-1;i++){if(M[i]!=A[i]){printf("t第%d位出現(xiàn)錯誤",i+1);k++;}}if(k==0){printf("t數(shù)據(jù)完全正確");}}voidmain(){intm,n;intA[20],M[20],G[20],i,j;printf("t**************************************************************");printf("

6、t請輸入生成器的長度m=");scanf("%d",&m);printf("t請輸入原始數(shù)據(jù)的長度n=");scanf("%d",&n);printf("t請輸入生成器=");for(i=0;i<=m-1;i++)scanf("%d",&M[i]);printf("t請輸入原始數(shù)據(jù)=");for(j=0;j<=n-1;j++)scanf("%d",&G[j]);for(i=0;i<=m-1;i++)A[i]=M[i];for(i=m;i<=m+n-2;i++)A[i]=0;//對被除數(shù)進行補crc(A,G,m+n-1,n);//調用異或函數(shù)for(i=0

7、;i<=m-1;i++)A[i]=A[i]+M[i];printf("t結果為:");for(i=0;i<=m+n-2;i++)printf("%d",A[i]);inta;printf("t是否繼續(xù)?1/2(1代表yes,2代表no):");printf("t********************************************************

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。