对循环冗余校验码(CRC)的一些体会
来源:互联网 发布:日本护肤品推荐 知乎 编辑:程序博客网 时间:2024/06/15 02:30
数据传输过程中数据可能会出现突变,所以需要校验,CRC是其中的一种校验码。它的总体思路是:
x=数A (要进行校验的数)
y=数B (传输双方约定好的一个数)
z=x/y的商
c=x/y的余数
x-c总能够整除y,我们在传输的时候传的是x-c,而c就是crc的检验码,
因此对方进行校验时,接收到的x-c应该总是能整除y的,如果不能整除就证明数据有误。
上面的说明用十进制数的运算来看很容易就能明白,但实际上我们的数据是以二进制数的形式来传输的,如果看过CRC码的产生过程,你可能就会有些疑惑了,那个过程中,并没有任何减法运算啊!不是的,已经减了,不过是模2减法,它首先将要传输的数据左移了k位(k等于校验码的位数),设移动后的数为A,然后进行模2除得出余数,亦即是校验码,到了最后,你可能以为是把校验码加到A上,其实不是,其实是A和校验码进行了模2减!数学真的是一样很奇妙的东西,并且凌驾于一切之上。模2加和模2减是等效的!
就这样,当对方收到数据时再进行一次除数相同的模2除,就知道有没有出错了。顺带一提,我看了几篇网上的文章介绍模2除的时候都说当余数首位是0时则商0,其实正确的说法应该是除去最高位后的余数部分的首位,而不是余数首位,就好像104/100的余数是多少?是4?不对,是004。。。。
- 对循环冗余校验码(CRC)的一些体会
- 循环冗余校验码(CRC)的基本原理
- 循环冗余校验码(CRC)
- 循环冗余校验码(CRC)
- 循环冗余校验码(CRC)
- 循环冗余校验码(CRC)
- CRC循环冗余校验码
- CRC循环冗余校验码
- CRC循环冗余校验码
- CRC循环冗余校验码
- 循环冗余校验码CRC
- 循环冗余校验码(CRC)
- CRC循环冗余校验码
- CRC循环冗余校验码
- 循环冗余校验码CRC
- CRC循环冗余校验码
- 循环冗余校验码CRC
- CRC循环冗余校验码的生成
- scala安装 scala eclipse插件安装 scala简单示例
- java字节码
- Flip Game翻转游戏
- diy面向请求的java框架
- Struts 2 Bean 标签教程
- 对循环冗余校验码(CRC)的一些体会
- ar6k_ndis.lib(miniport.obj) : error LNK2001: unresolved external symbol NDIS_BUS_DRIVER
- Linux常用命令
- flex中使用httpservice读取xml文件
- javascript简单验证
- sql choch02
- Berkeley DB(BDB)
- JBOSS jboss-log4j.xml文件中配置web工程日志
- iscsi