免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验九、链路层实验基于CRC编码的检错程序的实现实验报告序号: 16 姓名: 黄鑫 学号: 20111120102 成绩 一、实验目的1、通过实验,掌握CRC编码和解码的原理。2、掌握基于CRC编码的差错检测技术。二、实验指导现在计算机网络广泛采用的差错检测技术是基于CRC(cyclic redundancy check)循环冗余检测编码,CRC也称为多项式编码(polynomial code),CRC算法非常容易用硬件实现。CRC编码操作如下:对给定的数据D,发送者选择r个附加位,追加到D的末尾,形成d+r位的新位型,该位型正好能被G模2除尽。其中,G称为生成器。CRC编码算法实现:1、选择生成多项式G,其最高次方为r,即r+1位的二进制位串2、计算D2r, 即在数据D后面补r个0,构成d+r位的位串3、按模2除法求(D2r/G)的余数R,即:4、从D2r中模2减去R,得到新的数据T,即加了CRC的帧三、实验要求 1、设置一个d位的数据D,r+1位的多项式G,生成CRC码,并把此CRC码作为数据帧进行传送。2、编写两个子程序,分别实现CRC编码和CRC解码,在主函数中对子程序进行调用。解码子程序应能根据解码情况判断出接收到的数据帧是否出错,并给出提示。3、要求分别以正确和错误的数据来检验此检错程序。4、将编写程序的源代码加必要注释和程序运行结果一起填入实验报告中。提示:1、编写程序时数据直接用二进制数,可能用到位操作符(异或)和(左移)。 2、在设置错误的编码时,错误位数最好不要超过r+1位。源代码:#include #include bool Check(bool ,int,bool ,int); /校验编码bool Encoding(bool ,int,bool ,int,bool); /CRC编码int InputData(bool number, int maxSize)/输入数据char buffer101 = ;fflush(stdin);if (gets_s(buffer) = 0)return false;int n = strlen(buffer);if (n maxSize)return 0;for (int i = 0, j = n - 1; i = 0 ; i-)putchar(numberi ? 1 : 0);int main()while(1)printf(1、CRC编码t2、CRC校验t3、退出n);int i = 0;scanf(%d, &i);switch (i)case 1:goto1:printf(请输入生成多项式的编码:n);bool G100;int r = InputData(G, 100) - 1;if (r 1 | !G0 | !Gr)printf(输入错误!n);goto goto1;goto2:printf(请输入传送的数据:n);bool D100;int d = InputData(D, 100);if (d = 0)printf(输入错误!n);goto goto2;bool crc100;Encoding(D, d, G, r, crc);printf(编码结果为:n);PrintData(crc, d + r);printf(n);break;case 2:goto3:printf(请输入生成多项式的编码:n);bool G100;int r = InputData(G, 100) - 1;if (r 1 | !G0 | !Gr)printf(生成多项式输入错误。n);goto goto3;goto4:printf(请输入接收到的数据:n);bool CRC100;int n = InputData(CRC, 100);if (n = 0)printf(数据输入错误。n);goto goto4;printf(Check(CRC, n, G, r) ? 数据校验正确。nn : 数据校验错误。nn);break;case 3:return 0;default:printf(输入错误!n);break;bool Check(bool CRC, int n, bool G, int r) /此函数用于校验if (r 1 | n = r)/n必须是大于r的,小于r此函数结束return false;bool* rem = new booln;/将余数作为CRC的值for (int i = 0; i = 1; i-)if (remi)high_bits = i;break;if (high_bits =0; i-, j-)/高位对齐进行除法运算remi = (bool)(remi != Gj);delete rem;return result;bool Encoding(bool D, int d,bool G, int r, bool crc)/CRC编码if (!G0 | !Gr)return false;bool* rem = new boold + r;for (int i = 0; i d; i+)/初始化rem为D*2rremi + r = Di;for (int i = 0; i = 1; i-)if (remi)high_bits = i;break;if (high_bits =0; i-, j-)/高位对齐进行异或除法运算remi = remi != Gj;for (int i = r - 1; i= 0 ; i-)/将D与rem相加,作为结果crci = remi;for (int i = d + r - 1; i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026全球全营养婴儿配方奶粉行业研究报告
- 2026年10月自考03283食品安全与质量控制押题及答案(江苏)
- 2026年秋季高考考前心理辅导 从容自信走进考场
- 2026及未来5年中国尺码圈数据监测研究报告
- 2026事业单位工勤技能-甘肃-甘肃中式烹调师五级(初级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-湖南-湖南林木种苗工三级(高级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-湖南-湖南兽医防治员四级(中级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-湖北-湖北水工监测工一级(高级技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-海南-海南管道工四级(中级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-海南-海南客房服务员五级(初级工)历年参考题库含答案详解3套试卷
- 《AIGC与剪映专业版:短视频创作案例教程》-【教学大纲】
- 2026年市场监督局事业单位高频面试题包含详细解答
- 2026年山东泰安市中考语文考试真题及答案
- 水处理简答题考试题及答案
- 教育强国建设三年行动计划(2025-2027年)
- 主变基础施工方案
- 关于业务员催款制度
- 钢化玻璃安全生产培训计划课件
- 《行政能力与实践》课件-3.1 社会调查方案的设计
- 国企投融资笔试题及答案
- 高教版 中职语文 高三对口升学专题复习 一、知识点2、字形 教案
评论
0/150
提交评论