#include <stdio.h>
/****************************
*    Message:信息源
*    Poly   :码多项式
*    Poly_long:多项式长度
*    返回值:CRC循环校验码
*****************************/
unsigned char CRC(unsigned char Message,unsigned char Poly,unsigned char Poly_long)
{
unsigned char Check=Message;
int i;
int MoveSign=0x80;
while(1)
{
if(Poly&0x80)
{
break;
}
Poly=Poly<<1;
}
for(i=8;i>=Poly_long;i--)
{
if(Check&MoveSign)
{
Check=Check^Poly;

}
Poly    =Poly>>1;
MoveSign=MoveSign>>1;
}
return Check;
}
int main()
{
printf("%x",CRC(0xEC,0xD,4));
return 0;
}
上完课自己写的,请大牛评价一下
感觉和网上的过程不大一样(自己也看不懂网上的),可能理论没弄好,所以求更优算法
给50分