實(shí)驗(yàn)九、鏈路層實(shí)驗(yàn)——基于CRC編碼的檢錯(cuò)程序的實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)九、鏈路層實(shí)驗(yàn)——基于CRC編碼的檢錯(cuò)程序的實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告

ID:38698490

大?。?9.50 KB

頁(yè)數(shù):5頁(yè)

時(shí)間:2019-06-17

實(shí)驗(yàn)九、鏈路層實(shí)驗(yàn)——基于CRC編碼的檢錯(cuò)程序的實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第1頁(yè)
實(shí)驗(yàn)九、鏈路層實(shí)驗(yàn)——基于CRC編碼的檢錯(cuò)程序的實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第2頁(yè)
實(shí)驗(yàn)九、鏈路層實(shí)驗(yàn)——基于CRC編碼的檢錯(cuò)程序的實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第3頁(yè)
實(shí)驗(yàn)九、鏈路層實(shí)驗(yàn)——基于CRC編碼的檢錯(cuò)程序的實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第4頁(yè)
實(shí)驗(yàn)九、鏈路層實(shí)驗(yàn)——基于CRC編碼的檢錯(cuò)程序的實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告_第5頁(yè)
資源描述:

《實(shí)驗(yàn)九、鏈路層實(shí)驗(yàn)——基于CRC編碼的檢錯(cuò)程序的實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、實(shí)驗(yàn)九、鏈路層實(shí)驗(yàn)——基于CRC編碼的檢錯(cuò)程序的實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告序號(hào):姓名:學(xué)號(hào):2成績(jī)指導(dǎo)教師一、實(shí)驗(yàn)?zāi)康?、通過(guò)實(shí)驗(yàn),掌握CRC編碼和解碼的原理。2、掌握基于CRC編碼的差錯(cuò)檢測(cè)技術(shù)。二、實(shí)驗(yàn)指導(dǎo)現(xiàn)在計(jì)算機(jī)網(wǎng)絡(luò)廣泛采用的差錯(cuò)檢測(cè)技術(shù)是基于CRC(cyclicredundancycheck)循環(huán)冗余檢測(cè)編碼,CRC也稱為多項(xiàng)式編碼(polynomialcode),CRC算法非常容易用硬件實(shí)現(xiàn)。CRC編碼操作如下:對(duì)給定的數(shù)據(jù)D,發(fā)送者選擇r個(gè)附加位,追加到D的末尾,形成d+r位的新位型,該位型正好能被G模2除盡。其中,G稱為生成器。CRC編碼算法實(shí)

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

3、碼加必要注釋和程序運(yùn)行結(jié)果一起填入實(shí)驗(yàn)報(bào)告中。提示:1、編寫(xiě)程序時(shí)數(shù)據(jù)直接用二進(jìn)制數(shù),可能用到位操作符^(異或)和<<(左移)。2、在設(shè)置錯(cuò)誤的編碼時(shí),錯(cuò)誤位數(shù)最好不要超過(guò)r+1位。四、程序代碼:#includeintcrc(intD[],intG[],intx,intn);//該函數(shù)用于進(jìn)行異或運(yùn)算voidmain(){while(1){intd,g,n,m,result;g;intD[100],M[100],G[100],i,j;//D[]余數(shù),M[]被除數(shù)printf("請(qǐng)輸入生成器長(zhǎng)度:");scanf("%d",&g)

4、;printf("請(qǐng)輸入生成器為(空格輸入):");for(j=0;j<=g-1;j++)//將輸入的除數(shù)按位存儲(chǔ)在數(shù)組G[j]scanf("%d",&G[j]);printf("請(qǐng)選擇你要進(jìn)行的操作:1,CRC編碼2,CRC解碼:");scanf("%d",&n);if(n==1){printf("請(qǐng)輸入原始數(shù)據(jù)長(zhǎng)度=");scanf("%d",&d);printf("請(qǐng)輸入原始數(shù)據(jù)為(空格輸入):");for(i=0;i<=d-1;i++)//將輸入的數(shù)據(jù)按位存儲(chǔ)進(jìn)數(shù)組M[i]scanf("%d",&M[i]);f

5、or(i=0;i<=d-1;i++)D[i]=M[i];//將數(shù)組M[i]中的數(shù)據(jù)賦值給D[i]for(i=d;i<=d+g-2;i++)//將數(shù)據(jù)左移r位,后面補(bǔ)r+1個(gè)零D[i]=0;crc(D,G,d+g-1,g);//調(diào)用函數(shù),進(jìn)行異或運(yùn)算for(i=0;i<=d-1;i++)D[i]=D[i]+M[i];//將g-1位的余數(shù)加到數(shù)據(jù)后面,即為發(fā)送方發(fā)送的完整數(shù)據(jù)printf("發(fā)送方發(fā)送的數(shù)據(jù)為:");for(i=0;i<=d+g-2;i++)printf("%d",D[i]);printf("");}if(n==2){prin

6、tf("請(qǐng)輸入你要進(jìn)行校驗(yàn)的數(shù)據(jù)長(zhǎng)度=");scanf("%d",&m);printf("請(qǐng)輸入要進(jìn)行校驗(yàn)的數(shù)據(jù)為(空格輸入):");for(i=0;i<=m-1;i++)scanf("%d",&M[i]);result=crc(M,G,m,g);//調(diào)用函數(shù),進(jìn)行異或運(yùn)算,并返回結(jié)果if(result==0)printf("數(shù)據(jù)完全正確");if(result!=0)printf("數(shù)據(jù)有錯(cuò)誤");}}}intcrc(intD[],intG[],intx,intn)//該函數(shù)用于進(jìn)行異或運(yùn)算{inti,j,k,result;

7、printf("以下輸出異或運(yùn)算的全過(guò)程,最后一行為余數(shù)");for(k=0;k<=x-1;k++)//x=d+rprintf("%d",D[k]);//輸出補(bǔ)后的數(shù)for(i=0;i<=x-n+1;i++)//輸出異或運(yùn)算的全過(guò)程{if(D[i]==1)//當(dāng)首位為1時(shí)進(jìn)行異或{for(j=0;j<=n-1;j++)//n=g{if(D[i+j]==G[j])//G[]的第j+1個(gè)數(shù)和D[]的第i+j+1個(gè)數(shù)相同時(shí)D[i+j]=0;//異或運(yùn)算,相同為,不同為elseD[i+j]=1;}printf("");//輸出每次異或后的結(jié)果fo

8、r(k=0;k<=x-1;k++)printf("%d",D[k]);//輸出最后余數(shù)}}for(k=0;k<=x-1;k++)resu

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

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

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