校验为了对所发送的数据进行验证,接收数据与发送数据是否一致.这是就需要一种算法来实现.有奇偶校验,可以检测出任何奇数个位的错误.对于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,可以使得代码简化).直到所有的位移入寄存器!
阅读(1066) | 评论(0) | 转发(0) |