CRC循环冗余码的C语言实现 收藏.doc_第1页
CRC循环冗余码的C语言实现 收藏.doc_第2页
CRC循环冗余码的C语言实现 收藏.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CRC循环冗余码的C语言实现 收藏 关于循环冗余码的定义,可以百度:/view/575295.htm#sub575295 计算余数的二进制除法 第一步,要在数据位(被除数)后边补 0 , 0 的个数比除数(生成多项式)少一位。 第二步,做除法,从被除数的头五位减去五位的除数。除数的每一位都与被除数的对应位在不涉及上一位的情况下独立进行减法(实际进行的是模 2 加)。在本例中,除数 11001 与被除数的前五位 10110 进行的是模 2 加,得到 1111 (余数 1 前面的 0 被省略)。 在被除数中下一个没有使用过的比特接着被抄录下来,使得余数的位数和除数的位数相同。如果位数不够,在商位补 0 (这与一般除法相同),因此,下一步就是 11110 11001 ,结果是 111 ,依次类推。 在二进制除法中,除数总是以 1 开头的,然后从上一次的被除数 / 余数中与除数位数相同的部分中减去除数,并且只能从最左位是 1 的被除数 / 余数中减去除数。每当被除数 / 余数的最左位是 0 时,就在该步骤中把 0 丢弃,再把被除数中的下一个未使用比特抄录下来填充余数,同时对应的商数位补一个零,并按上述方法进行二进制除法运算,一直重复这个过程直到被除数中所有比特都被使用过。 余数 100 只有 3 位,而余数应为 4 位(比除数少一位),因此,取校验码时应在前面填一个 0 ,故其 CRC 校验码应为 0100 ,于是可求出该信息码的循环冗余码为 101100110100 。 为了判断传输的正确性,在接收端要有一个 CRC 校验器。它的功能和发生器一样,当收到 CRC 冗余校验码后,做同样的模 2 除法(注意,这里采用的生成多项式一定要与发送端相同)。如果余数是全 0 ,则说明传输正确;否则,传输错误,应重传。 view plaincopy to clipboardprint?1. #include2. #include3. #include4. #include5. #include6. usingnamespacestd;7. chars150;/存放特定的CRC8. chars250;/存放要传输的二进制串9. chars50;/存放转化好的信息码10. intlen,len1;11. voidto_binary(intn)12. 13. slen+=,;14. len1-;15. stackq;16. while(n)17. 18. q.push(n%2);19. n/=2;20. len1-;21. 22. while(len10)23. 24. q.push(0);25. len1-;26. 27. while(!q.empty()28. 29. intx=q.top();30. slen+=x+0;31. q.pop();32. 33. slen+=0;34. 35. intnum(intn)36. 37. if(n=0)38. return1;39. intcount=1;40. while(n!=1)41. 42. count+;43. n=1;44. 45. returncount;46. 47. intf(inta,intb)48. 49. if(num(a)=(x-y);58. a=ab;59. a=(x-y);60. intk=t&(1(x-y)-1);61. a=a+k;62. returnf(a,b);63. 64. 65. intmain()66. 67. printf(输入特定的CRC:);68. scanf(%s,s1);69. while(1)70. 71. inti,j;72. intb=0,a=0;73. len1=strlen(s1);74. for(i=0;ilen1;i+)75. b=b*2+s1i-0;76. printf(输入传输的二进制串:);77. scanf(%s,s2);78. len=strlen(s2);79. strcpy(s,s2);80. for(i=0;ilen;i+)81. a=a*2+s2i-0;82. intcount=0;83. intsum=0;84

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论