- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机通信网络课程实验报告循环冗余校验.doc
计算机通信网络课程实验报告
实验三:循环冗余校验
班级:
姓名:
学号:
1 实验目的
熟悉VC开发环境,学习VC编程的基本步骤。
2. 写一个C程序,将实现CRC编码。此计画包含了两侧。第一个函数将会产生校验从原始数据和发电机。第二的会检查是否校验和是正确的。
2 实验环境
要求安装Window XP、Visual C++ 6.0、MSDN
3 实验原理
循环冗余校验(CRC)通常是用来编码错误检测。在CRC错误检查,传送设备的基础上计算出号码传送的数据。接收设备重复同一计算后传输。如果两个设备都得到同样的结果,故假定传播是无错误的。程序被称为冗余校验是因为每个传输不仅包括数据,另外,冗余值进行错误检查。
假设数据传输过程中需要发送15位的二进制信息g=101001110100001,这串二进制码可表示为代数多项式g(x) = x^14 + x^12 + x^9 + x^8 + x^7 + x^5 + 1,其中g中第k位的值,对应g(x)中x^k的系数。将g(x)乘以x^m,既将g后加m个0,然后除以m阶多项式h(x),得到的(m-1)阶余项r(x)对应的二进制码r就是CRC编码。
h(x)可以自由选择或者使用国际通行标准,一般按照h(x)的阶数m,将CRC算法称为CRC-m,比如CRC-32、CRC-64等。
g(x)和h(x)的除运算,可以通过g和h做xor(异或)运算。比如将11001与10101做xor运算:
??????
明白了xor运算法则后,举一个例子使用CRC-8算法求101001110100001的效验码。CRC-8标准的h(x) = x^8 + x^7 + x^6 + x^4 + x^2 + 1,既h是9位的二进制串111010101。?
经过迭代运算后,最终得到的r这就是CRC效验码。
4.实验要求
1.编码在C(用VB或MFC或其他代码将被拒绝)。
2.输入数据填补数据域、编码或支票CRC码在现场总线控制系统领域。
3.所有的信息都需要输入“0”或“1”。
4.插座程序所需的传输。
5 设计流程图
6 调试及结果分析
(1)
实验分析:图中客户/服务器已建立连接,等待客户输入数据
(2)
分析:图中连接已建立,客户输入信息码(图中和生成多项式(图中为1011),
客户端自己计算出字节数(图中为11)
(3)
在服务器中输入生成多项式(图中为1011)如果服务器中的生成多项式与客户端的生成多项式一样,则系统提示为‘CRC is successful!’如果不一样则系统提示为‘CRC is not successful!’
6 系统调试出现及解决的问题
本次实验的问题就是关于CRC的编程出现困难,只能通过上网查找资料再经多次修改后才运行成功。
7 实验小结
通过本次实验我进一步熟悉了VC开发环境和VC编程的基本步骤。熟悉了CRC编码。
附录:
string crc_function(string m,string p)
{
string r(m.begin (),m.begin ()+p.size ()),q;
m=m+string(p.size ()-1,0);
string::size_type i=p.size(),N=m.size (),j,i1=p.size ();
while(i=N)
{
q=;
if(p[0]==r[0])
{
for(j=0;ji1;j++)
{
q+=(r[j]-48)^(p[j]-48)+48;
}
r=q;
}
else
{
r.erase(0,1);
r=r+m[i++];
}
}
coutrendl;
return r;
}
文档评论(0)