Chinaunix首页 | 论坛 | 博客
  • 博客访问: 233520
  • 博文数量: 60
  • 博客积分: 2466
  • 博客等级: 大尉
  • 技术积分: 662
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-16 13:25
文章分类

全部博文(60)

文章存档

2014年(1)

2012年(15)

2011年(24)

2010年(17)

2009年(3)

我的朋友

分类: C/C++

2011-04-03 20:51:51

  校验为了对所发送的数据进行验证,接收数据与发送数据是否一致.这是就需要一种算法来实现.有奇偶校验,可以检测出任何奇数个位的错误.对于CRC校验,是就一种数学运算,GF(2)(2元素迦罗瓦域).一种系数为0,1的多项式代数运算.运算的规则为:加减,不考虑进位,借位;乘除中和一般乘除相同,只是乘除中产生的加减运算,进位借位也不考虑.
  crc的规则是一个n位的二进制数,对应一个多项式M,乘以Xr,就有M'一个多项式,再除以一个次数为r的生成式G(r+1位的二进制码)
取得的余式表达式,就为CRC校验码.对于生成式的选择,有理论计算.
  如何编程实现CRC校验码计算的生成.要有r位的校验码,设有一个r位的寄存器,如果寄存器首位是1,先左移一位,再和G的后r位相异或(这里G是r+1位,相左移了一位就好比是一个17位的寄存器,但17位上算得的值始终为0,可以使得代码简化).直到所有的位移入寄存器!
阅读(1038) | 评论(0) | 转发(0) |
0

上一篇:走远

下一篇:依然

给主人留下些什么吧!~~