注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我的博客

 
 
 

日志

 
 

网络技术实验报告——CRC校验码  

2007-12-05 23:25:49|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

实验名称编写程序实现CRC冗余码

实验目的:让学生清楚CRC冗余码的生成过程和校验原理

实验要求:要求输入一段信息能够输出冗余码字,界面美观,容易操作

实验分析:CRC冗余校验码的生成过程:设生成多项式最高次为r,

(1)   在信息码字后面加上r0

(2)   将加上0 的信息码字与生成多项式码字相除(求异或);

(3)   将所得的余数(r位)代替信息码字后面的r0;所得的便是CRC冗余码;

            校验原理:将收到的冗余码字除以发送方的生成多项式码字,若余  数为0,则收到的码字正确,若余数不为0,则收到码字错误,要求重传。

程序分析:首先要求输入生成多项式代码,再输入消息代码,将它们存放在定义好的数组中。因事先不知道它们的长度,所以定义数组时应该大一些。相除时要注意保存好余数,且要进行移位操作。

开始

程序流程图:

          

输入生成多项式码字g

输入信息码字m[]

 

 


在信息码字后面补0,求数组长度r

 

 

int i=0do{

掉用异或函数,移位相除

i++

 

while(i<r)

m[]和余数一起赋值给c[];

1

输出c[];即冗余码

 


程序结束

实验心得:实验是对我们应用知识的考察,通过它我们能更加了解自己的能  力。这次的实验是网络课实验中最简单的一次,但我做得一点都不好,还没有写软件的概念和思想,程序也写得不好,还没有再实验课上完成的,是后来到寝室才完成的,没有通过老师的检查,幸亏我们的老师心地善良,说不用检查也可以通过。这个程序只能实现主要的功能,没有界面,也没有什么操作,因能力有限,只能做到这个样子,还望老师见谅。有空的话我一定好好学习一种编程软件。

参考资料:《计算机网络(第四版)》

源代码:

           //CRC冗余校验码

#include<stdio.h>

#include<string.h>

#include<iostream.h>

void xor(char a[],char b[]);

int t;

main()

{char g[10],m[20],a[10],c[30];

 int  r,q;

 int i=0,k=0;

 printf("输入特征多项式代码:");

 cin>>g;                        //输入多项式代码

 t=strlen(g);

 for(;;)

 {printf("\n输入信号代码:");

  cin>>m;                         //输入信息代码

  q=strlen(m);

  for(i=0;i<t-1;i++)               //将信息代码的冗余位补0 

  {a[i]='0';

   m[q+i]='0';

  }

  a[t-1]='0';                    

  strcpy(c,m);

  r=q+t-1;

  for(;;)

  {while(a[0]=='0'&&k<r)          //信息代码与多项式代码相除得余数

   {for(i=0;i<t-1;i++)

       a[i]=a[i+1];

    a[t-1]=m[k];

    k++;

   }

   if(a[0]!='0')

        xor(a,g);                   //异或运算

   if(k==r)

              break;

  }

  printf("增加冗余位是:");

  for(int j=1;j<t;j++)             //输出冗余位

  {c[q+j-1]=a[j];

  putchar(a[j]);

  }

  printf("\n冗余码为:");           //输出冗余码

  for(int x=0;x<q+t-1;x++)

        cout<<c[x];

  cout<<endl;

 }

}

 

 

void xor(char a[],char b[])      //异或函数

{int i;

 for(i=0;i<t;i++)

       if(a[i]==b[i])

              a[i]='0';

        else

           a[i]='1';

}

实验结果:

  评论这张
 
阅读(553)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017