免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1139 | 回复: 0
打印 上一主题 下一主题

[算法] 用C如何实现下面的算法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-10 09:48 |只看该作者 |倒序浏览
计算 X(k)+1(即X的k次幂加1)除以CRC-16/32后的余式,k从1到32768.
功能要求:要编写程序;要按余式的次数、为零与否分类统计。

另附上有关CRC016/32的定义:
    将要发送的二进制数序列看成是只有0和1两个系数的一个多项式。n位的数据序列对应n-1次多项式。如:二进制数序列为"1010001",7位的数据序列对应6次多项式:
  K(x)=x6+x4+1
    选定除式G(x) , 被选作除式的多项式称为生成多项式,以下三个多项式已成为国际标准
    CRC-12:   G(x)=x12 +x11 +x3 + x2 + x + 1
    CRC-16:   G(x)=x16 +x15 + x2 + 1
    CRC-CCITT:   G(x)=x16 +x12 + x5 + 1     
    CRC-32         G(x)= x32+x26+x23+x22+x16+x12+x11+ x10
                                                 +x8+x7+x5+x4 + x2+x+1
将K(x)乘以 G(x)的最高幂次作为被除式, G(x)作多项式除式XrK(x)=G(x)*商+R(x)(相应系数相除) 。除法采用"加法不进位,减法不借位"的规则,即相当于异或操作
    R(x)作为冗余码,加在原传送数据后面:
  T(x)= XrK(x) +R(x)= G(x) *商+R(x) + R(x)= G(x) *商,构成发送序列。
    接收方收到后,将接收序列用同样的生成多项式去除
     T(x)/G(x)。若余式为零,则表示无差错;否则,说明传输过程中出现了错误。
也就是,
    要发送的二进制数序列为"1010001",7位的数据序列对应6次多项式:
   K(x)=x6+x4+1   
    选定的生成多项式为:
      G(x)=x4 +x2 +x+ 1
     (最高次数为4,相当于10111)
    被除多项式为:
   K(x)x4= x10+x8+x4  
    (相当于10100010000)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP