CRC循环冗余校验码的基本原理-笔记

基本原理:在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


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码计算及校验原理的最通俗解释

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值