1,CRC8算法疑问

信息大,会分段传输,每段都有自己的crc校验,然后在接收方组合。crc相同的情况叫做crc碰撞,由于crc只有8位,所以发生碰撞的概率比较高,所以一般需要安全性比较高的地方都是用md5或sha1校验的。

CRC8算法疑问

2,关于CRC检错 计算 菜鸟级 会的来讲讲

计算CRC码的步骤为:(1).预置16位寄存器为十六进制FFFF(即全为1)。称此寄存器为CRC寄存器;(2).把第一个8位数据与16位CRC寄存器的低位相异或,把结果放于CRC寄存器;(3).把CRC寄存器的内容右移一位(朝低位),用0填补最高位,检查最低位(注意:这时的最低位指移位前的最低位,不是移位后的最低位);(4).如果最低位为0:重复第3步(再次移位)如果最低位为1:CRC寄存器与多项式A001H(1010000000000001B)进行异或;(5).重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;(6).重复步骤2到步骤5,进行下一个8位数据的处理;(7).最后得到的CRC寄存器即为CRC码。

关于CRC检错 计算 菜鸟级 会的来讲讲

3,8位crc

#define POLY (0x1070 << 3)u8 crc8(u16 data) int i; for(i = 0; i < 8; i++) if (data & 0x8000) data = data ^ POLY; data = data << 1; } return (u8)(data >> 8);}
crc 中的生成多项式,是有很多标准的。其统一的规律是:最高位、最低位都为1。8位crc校验通常用的是crc-8,其生成多项式为:107h = 1 0000 0111b进行异或运算时,最高位,就算是移出去了,因此,只用 07h 进行异或计算即可。

8位crc

4,如何计算CRC校验码

我先给你举个例子: 已知信息位为1100,生成多项式G(x) = x3+x+1,求CRC码。 M(x) = 1100 M(x)*x3 = 1100000 G(x) = 1011 M(x)*x3 / G(x) = 1110 + 010 /1011 R(x) = 010 CRC码为: M(x)*x 3+R(x)=1100000+010 =1100010 其原理是:CRC码一般在k位信息位之后拼接r位校验位生成。编码步骤如下: (1)将待编码的k位信息表示成多项式 M(x)。 (2)将 M(x)左移 r 位,得到 M(x)*xr 。 (3)用r+1位的生成多项式G(x)去除M(x)*xr 得到余数R(x)。 (4)将M(x)*xr 与R(x)作模2加,得到CRC码。

5,如何计算CRC校验位

在CRC计算时只用8个数据位,起始位及停止位,如有奇偶校验位也包括奇偶校验位,都不参与CRC计算。 CRC计算方法是: 1、 加载一值为0XFFFF的16位寄存器,此寄存器为CRC寄存器。 2、 把第一个8位二进制数据(即通讯信息帧的第一个字节)与16位的CRC寄存器的相异或,异或的结果仍存放于该CRC寄存器中。 3、 把CRC寄存器的内容右移一位,用0填补最高位,并检测移出位是0还是1。 4、 如果移出位为零,则重复第三步(再次右移一位);如果移出位为1,CRC寄存器与0XA001进行异或。 5、 重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理。 6、 重复步骤2和5,进行通讯信息帧下一个字节的处理。 7、 将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换 8、 最后得到的CRC寄存器内容即为:CRC校验码。

6,CRC校验码的计算问题

首先你应该知道一件事情,859D这里的”D”表示什么?生成多项式是10011B的”B”又表示什么?下面我来解释一下:”D”表示十进制”B”表示二进制”O”表示八进制”H”表示十六进制好了,这个我们知道了,那么下一步我们就是要把十进制的859化成二进制(859D).859D化成二进制为:1101011011.OK,生成多项式是二进制,我们就不用化了,是五位(10011).如果还要算校验位的话;我们就在1101011011后面加4位,比刚才生成多项式少1位.于是就成了11010110110000再去除于生成多项式(10011)求余数.
101011010101后加5个0然后除110101,得出110111111001余数为1101,不足五位,添满五位成为01101于是含有crc校验码的实际发送数据的比特序列为10101101010101101

7,CRC码的运算

解决不了,给你例子你参考下 题目:当前信息码字为100100,多项式G(X)=X^3+X^2+1 实际传送的信息码为? 步骤:1、看多项式多少阶 就是X最大的那个次方(题目上就是3) 2、如果是n阶,就在原来的信息码字后面加上n个0得到字串A 题目上就是100100000 3、用多项式的系数对应生成字串B 题目中多项式G(X)=X^3+X^2+1 带系数x写法 G(X)=1*X^3+1*X^2+0*X^1+1*X^0 所以B就是1101 4、 按模2除法用A除以B(模2 除法就是加减都是异或运算)得到的余数就是crc的校验码 题目中算出余数就是001 5、实际传送的信息就是原来的信息码+上校验码 答案是100100001

文章TAG:8位crc的信息位检验位均为多少信息  信息位  检验  
下一篇