循环冗余校验码(CRC)
来源:互联网 发布:魔女宅急便 知乎 编辑:程序博客网 时间:2024/05/17 01:35
循环冗余校验码(CRC)的基本原理是:
在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。
校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2R,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2R除以生成多项式G(x)得到的余数就是校验码。
非常简单,要说明的:模2除就是在除的过程中用模2加,模2加实际上就是我们熟悉的异或运算,就是加法不考虑进位,公式是:
0+0=1+1=0,1+0=0+1=1
即‘异’则真,‘非异’则假。
由此得到定理:a+b+b=a 也就是‘模2减’和‘模2加’直值表完全相同。
有了加减法就可以用来定义模2除法,于是就可以用生成多项式g(x)生成CRC校验码。
例如: g(x)=x4+x3+x2+1,(7,3)码,信息码110产生的CRC码就是:
对于g(x)=x4+x3+x2+1的解释:(都是从右往左数)x4就是第五位是1,因为没有x1所以第2位就是0。
11101 | 110,0000(设a=11101 ,b=1100000)
取b的前5位11000跟a异或得到101
101加上b没有取到的00得到10100
然后跟a异或得到01001
也就是余数1001
余数是1001,所以CRC码是110,1001
标准的CRC码是,CRC-CCITT和CRC-16,它们的生成多项式是:
CRC-CCITT=x^16+x^12+x^5+1
CRC-16=x^16+x^15+x^2+1
2.代码实现
- 循环冗余校验码(CRC)
- 循环冗余校验码(CRC)
- 循环冗余校验码(CRC)
- 循环冗余校验码(CRC)
- CRC循环冗余校验码
- CRC循环冗余校验码
- CRC循环冗余校验码
- CRC循环冗余校验码
- 循环冗余校验码CRC
- 循环冗余校验码(CRC)
- CRC循环冗余校验码
- CRC循环冗余校验码
- 循环冗余校验码CRC
- CRC循环冗余校验码
- 循环冗余校验码CRC
- 循环冗余校验码(CRC)的基本原理
- CRC 循环冗余校验码 (VC编程)
- CRC校验(循环冗余校验码)
- 硬中断 和软中断以及时钟中断
- cygwin使用心得
- 今天起博客暂停更新一年(高三了)
- JAVA Swing异或图形模式
- 一个好玩CSS验证网站
- 循环冗余校验码(CRC)
- 花费1800元学习的seo内容公开
- Wordpress中文名附件上传问题的解决方案
- IT工程师的十条建议
- C++中文字符的处理
- C#读写XML文件
- 《DOOM启示录》读后感
- 5.6 a,b交换
- 读《essential c++》有感