CRC计算,CRC码信息位串101011 ,生成多项式 G(X) = X^3 +X +1 ,求出该信息串的crc码.,
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 05:21:28
CRC计算,CRC码信息位串101011 ,生成多项式 G(X) = X^3 +X +1 ,求出该信息串的crc码.,
CRC计算,CRC码
信息位串101011 ,生成多项式 G(X) = X^3 +X +1 ,求出该信息串的crc码.,
CRC计算,CRC码信息位串101011 ,生成多项式 G(X) = X^3 +X +1 ,求出该信息串的crc码.,
1、将X的最高次幂为R的生成多项式G(X)转换成对应的R+1位二进制数.
2、将信息码左移R位,相当于对应的信息多项式C(X)*2R.
3、用生成多项式(二进制数)对信息码做除,得到R位的余数.
4、将余数拼到信息码左移后空出的位置,得到完整的CRC码.
【例】假设使用的生成多项式是G(X)=X3+X+1.4位的原始报文为1010,求编码后的报文.
1、将生成多项式G(X)=X3+X+1转换成对应的二进制除数1011.
2、此题生成多项式有4位(R+1)(注意:4位的生成多项式计算所得的校验码为3位,R为校验码位数),要把原始报文C(X)左移3(R)位变成1010 000
3、用生成多项式对应的二进制数对左移3位后的原始报文进行模2除(高位对齐),相当于按位异或:
1010000
1011
------------------
0001000
1011
------------------
011
得到的余位011,所以最终编码为:1010 011
* CRC.C——CRC程序库 */
#define CRCCCITT 0x1021
#define CCITT-REV 0x8408
#define CRC16 0x8005
#define CRC16-REV 0xA001
#define CRC32-POLYNOMIAL 0xEDB88320L
/* 以上为CRC除数的定义 */
#define NIL 0
#define crcupdate(d,a,t)*(a)=(*(a)8)^(d)];
#define crcupdate16(d,a,t)*(a)=(*(a)>>8^(t)[(*(a)^(d))&0x00ff])
/* 以上两个宏可以代替函数crcupdate和crcrevupdate */
#include #include #include /* 函数crchware是传统的CRC算法,其返回值即CRC值 */ unsigned short crchware(data,genpoly,accum)
unsigned short data;/* 输入的数据 */
unsigned short genpoly;/* CRC除数 */
unsigned short accum;/* CRC累加器值 */
{
static int i;
data