搜索
bottom↓
回复: 6

CRC 直接算法求助 贴上程序 望大虾指导下

[复制链接]

出0入0汤圆

发表于 2011-4-6 11:37:12 | 显示全部楼层 |阅读模式
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的话  那这个位不是没有处理到吗?按照上面的程序的话。

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2011-4-6 13:00:17 | 显示全部楼层
0x1021实际上是0x011021的尾数。CRC16的 magic value有17位,CRC8的magic value有9位,等等。但是最高位总是1.

看样子LZ还没搞懂CRC的原理

出0入0汤圆

发表于 2011-4-6 13:03:22 | 显示全部楼层
CRC在数学原理上,可以认为将原数据流,从高位到低位处理,通过与magic value做广义加法运算(实际上就是异或),让前面的位都变成0,剩下的就是CRC值。

可以对比小学的竖式笔算除法,除法过程中高位一点点减成0,剩下的尾数就是余数,这个余数对应CRC算法中的CRC校验值。

出0入0汤圆

 楼主| 发表于 2011-4-6 13:52:22 | 显示全部楼层
【1楼】fnems

0x1021实际上是0x011021的尾数。crc16的 magic value有17位,crc8的magic value有9位,等等。但是最高位总是1.
看样子lz还没搞懂crc的原理
-----------------------------------------------------------------------
先谢谢你的回答

有点愚钝啊  想了 两天没想明白 总觉得是原理弄明了 但是一看C程序就感觉跟原理的对不上了。我把数据类型都定义为长整型后  cRc_16=(cRc_16<<=1)^0x11021 跟 cRc_16=(cRc_16<<=1)^0x1021  放到上面的程序里的结果是一样的。 为什么是这样呢?望继续关注下  我脑袋实在是转不过弯来了

出0入0汤圆

 楼主| 发表于 2011-4-6 14:00:48 | 显示全部楼层
那是不是拿一个数跟0x1021做模2除法 和跟0x11021做模2除法的得出的余式是一样的吗?

出0入0汤圆

发表于 2011-4-7 12:28:33 | 显示全部楼层
可以认为magic value里面最高位是用来把原数据串从头到尾遇到的1变成0用的。所以最高位那个1没有用,实际用的时候都用尾数。

我在这里也不好说明白,自己看wikipeida好了,那里讲得清楚些

http://en.wikipedia.org/wiki/Cyclic_redundancy_check

出0入0汤圆

 楼主| 发表于 2011-4-8 00:16:50 | 显示全部楼层
感谢 感谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 10:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表