发表于:2011/4/6 11:46:34
#0楼
void CRCTest()
{
unsigned short cRc_16=0;
unsigned short i=138;
cRc_16 = i<<8;
for(j=8;j>0;j--)
{
if(cRc_16&0x8000)
cRc_16=(cRc_16<<=1)^0x1021 //## (1)##
else
cRc_16<<=1;
}
printf("%x\n",cRc_16);
}
就专门用一个数138测试一下这个程序 输出来的结果还真是对的 。 我想问一下在我标注(1)的这个语句为什么不是先跟0X1021异或再向前移一位的呢???
如果cRc_16这个数值的第一位是1的话 那这个位不是没有处理到吗?按照上面的程序的话。
{
unsigned short cRc_16=0;
unsigned short i=138;
cRc_16 = i<<8;
for(j=8;j>0;j--)
{
if(cRc_16&0x8000)
cRc_16=(cRc_16<<=1)^0x1021 //## (1)##
else
cRc_16<<=1;
}
printf("%x\n",cRc_16);
}
就专门用一个数138测试一下这个程序 输出来的结果还真是对的 。 我想问一下在我标注(1)的这个语句为什么不是先跟0X1021异或再向前移一位的呢???
如果cRc_16这个数值的第一位是1的话 那这个位不是没有处理到吗?按照上面的程序的话。