CRC循环冗余校验码的基本原理-笔记
2016-11-30 19:18
204 查看
基本原理:在K位信息码(我们要传递的值-二进制)后面加上R位的校验码,R位即为G(x)多项式的最高幂(校验码的位数比生成除数的位数少1)。整个码的长度为N位,根据N位和K位查表找到多项式G(x)。根据G(x)生成除数用来接收端判断数据是否正确(收到的整个编码如果能够整除除数的话那么就是完整并且正确的数据)。
G(x)多项式从表中通过信息码的位数得到相应的G(x)多项式,得到之后,可以从多项式中算出除数(二进制),例如 x3+x+1,那么相应的二进制为 1011,1*x^3+0*x^2+1*x^1+1*x^0=x^3+x+1
假设现在我要发送数据: 1010 ,那么K=4,我们选择G(x)=x^3+x+1,总共有3位项数,即原信息码向左移动3位 –> 1010 000 。根据G(x)=x^3+x+1生成除数为 1011, 1010 000 除以 1011 进行模2相除(即为异或)。商为1001,余数为11,11即为校验码,那么拼接之后生成CRC码–> 1010 011。那么在接收端根据列表找到G(x)得到除数,将CRC码相除若无余数则为数据传输正确。如若要取原码只要左移R位即可。
模2相除:相同为0,不同为1
举例:1010 000 除以 1011
1 001
1011 )1010 000
1011
—————–
1000
1011
————
11
参考文档:循环冗余校验码(CRC)的基本原理 循环冗余(CRC)算法入门引导 CRC码计算及校验原理的最通俗解释
G(x)多项式从表中通过信息码的位数得到相应的G(x)多项式,得到之后,可以从多项式中算出除数(二进制),例如 x3+x+1,那么相应的二进制为 1011,1*x^3+0*x^2+1*x^1+1*x^0=x^3+x+1
N K 码距d G(x)多项式 G(x) 7 4 3 x3+x+1 1011 7 4 3 x3+x2+1 1101 7 3 4 x4+x3+x2+1 11101 7 3 4 x4+x2+x+1 10111 15 11 3 x4+x+1 10011 31 26 3 x5+x2+1 100101 63 57 3 x6+x+1 1000011
假设现在我要发送数据: 1010 ,那么K=4,我们选择G(x)=x^3+x+1,总共有3位项数,即原信息码向左移动3位 –> 1010 000 。根据G(x)=x^3+x+1生成除数为 1011, 1010 000 除以 1011 进行模2相除(即为异或)。商为1001,余数为11,11即为校验码,那么拼接之后生成CRC码–> 1010 011。那么在接收端根据列表找到G(x)得到除数,将CRC码相除若无余数则为数据传输正确。如若要取原码只要左移R位即可。
模2相除:相同为0,不同为1
举例:1010 000 除以 1011
1 001
1011 )1010 000
1011
—————–
1000
1011
————
11
参考文档:循环冗余校验码(CRC)的基本原理 循环冗余(CRC)算法入门引导 CRC码计算及校验原理的最通俗解释
相关文章推荐
- CRC循环冗余校验码
- iBatis2学习笔记:基本原理和配置
- 19、深入理解计算机系统笔记,虚拟存储器,基本原理(1)
- CRC 循环冗余校验码 (VC编程)
- 嵌入式开发之C基础学习笔记01--基本原理
- Android基本原理笔记
- 20、深入理解计算机系统笔记,虚拟存储器,基本原理(2)
- Android官网学习笔记003:应用程序基本原理(02)
- 计算机网络 CRC循环冗余校验码
- Java学习笔记 基本原理
- CRC 循环冗余校验码 (VC编程)
- 循环冗余校验码CRC,求解步骤
- CRC循环冗余校验码
- CRC循环冗余校验码
- C#源码——CRC16循环冗余校验码的实现
- 循环冗余校验码(Cyclic Redundancy Check,CRC)
- 对循环冗余校验码(CRC)的一些体会
- 项目采购的基本原理(笔记)
- git笔记-基本原理
- STM32F10x 学习笔记3(CRC计算单元)