云南大学计算机网络期中考试刘春花,实验九基于CRC编码的检错程序的实现.doc...
實驗九基于CRC編碼的檢錯程序的實現.doc
云南大學軟件學院實 驗 報 告課程 計算機網絡原理實驗 任課教師 劉春花,劉宇 姓名 學號 專業 成績 實驗九、鏈路層實驗基于 CRC 編碼的檢錯程序的實現實驗報告一、實驗目的1、通過實驗,掌握 CRC 編碼和解碼的原理。2、掌握基于 CRC 編碼的差錯檢測技術。二、實驗指導現在計算機網絡廣泛采用的差錯檢測技術是基于 CRC(cyclic redundancy check)循環冗余檢測編碼,CRC 也稱為多項式編碼(polynomial code) ,CRC算法非常容易用硬件實現。CRC 編碼操作如下對給定的數據 D,發送者選擇 r 個附加位,追加到 D 的末尾,形成 dr 位的新位型,該位型正好能被 G 模 2 除盡。其中,G 稱為生成器。CRC 編碼算法實現1、選擇生成多項式 G,其最高次方為 r,即 r1 位的二進制位串2、計算 D2r, 即在數據 D 后面補 r 個 0,構成 dr 位的位串3、按模 2 除法求(D2 r/G)的余數 R,即4、從 D2r中模 2 減去 R,得到新的數據 T,即加了 CRC 的幀三、實驗要求 1、設置一個 d 位的數據 D,r1 位的多項式 G,生成 CRC 碼,并把此 CRC 碼作為數據幀進行傳送。2、編寫兩個子程序,分別實現 CRC 編碼和 CRC 解碼,在主函數中對子程序進行調用。解碼子程序應能根據解碼情況判斷出接收到的數據幀是否出錯,并給出提示。3、要求分別以正確和錯誤的數據來檢驗此檢錯程序。4、將編寫程序的源代碼加必要注釋和程序運行結果一起填入實驗報告中。提示1、編寫程序時數據直接用二進制數,可能用到位操作符異或和include void crcint A,int G, int x,int n編碼程序int i,j,k;printf“ntt“;for k0;kx-1;kprintf“ d“,Ak; 輸出補后的數for i0;ix-n1;iif Ai1 當首位為時進行異或for j0;jn-1;jif AijGjAij0; 異或運算,相同為,不同為else Aij1;printf“ntt“; 輸出每次異或后的結果for k0;kx-1;kprintf“ d“,Ak; 輸出余數void crlint M,int A,int m,int n檢驗解碼程序int k0,i;fori0;im-1;iifMiAiprintf“nnt 第d 位出現錯誤n“,i1;k;ifk0printf“nnt 數據完全正確n“;void main int m,n;int A20,M20,G20,i,j;printf“ntn“;printf“nnt 請輸入生成器的長度 m“;scanf“d“,printf“nnt 請輸入原始數據的長度 n“;scanf“d“,printf“nnt 請輸入生成器“;for i0;im-1;iscanf“d“,printf“nnt 請輸入原始數據“;for j0;jn-1;jscanf“d“,for i0;im-1;iAiMi;for im;imn-2;iAi0; 對被除數進行補crcA,G,mn-1,n; 調用異或函數for i0;im-1;iAiAiMi;printf “nnt 結果為“;for i0;imn-2;iprintf “d“,Ai;int a;printf“nnt 是否繼續 1/21 代表 yes,2 代表 no “;printf“ntn“;scanf“d“,getchar;ifa1 繼續system“cls“;printf“ntn“;printf“nnt 請輸入需要解碼的數據“;for i0;im-1;iscanf“d“,crlM,A,m,n;printf“ntn“;elsesystem“cls“;printf“ntn“;printf“ntt*按任意鍵退出n“;printf“ntn“;getchar;exit0;
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的云南大学计算机网络期中考试刘春花,实验九基于CRC编码的检错程序的实现.doc...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端请求接口post_接口自动化测试-W
- 下一篇: java 常量区存放 new_java-