CRC循环校验码的计算

1.将n位有效信息编码为多项式M(x)

                M(x)=C_{n-1}x^{n-1}+C_{n-2}x^{n-2}+....+C_{1}x^{1}+C_{0}

其中C_{i}=0或1,表示第i位的信息(i=0,1,2,3...,n-1)

2.选择一个k+1位的生成多项式G(x)作为约定除数

                G(x)=G_{j}x^{j}+G_{j-1}x^{j-1}+....+G_{1}x^{1}+G_{0}

3.把M(x)左移k位,可以得到n+k位的M(x)\cdot x^{k},然后用M(x)\cdot x^{k}按模2除法除以G(x),得到k位余数R(x)

                \frac{M(x)\cdot x^{k}}{G(x)}=Q(x)+\frac{R(x)}{G(x)}

4.将M(x)\cdot x^{k}与余数R(x)做模2加,得到

                M(x)\cdot x^{k}+R(x)=Q(x)\cdot G(X)+R(x)+R(x)=Q(x)\cdot G(x)

注意:在模2加时,R(x)+R(x)=0

M(x)\cdot x^{k}的后k位拼接k位的R(x),就得到了n+k位的CRC码

例题

已知有效信息位1010B,生成多项式为G(x)=x3+x+1,求CRC校验码

解:(1).将n位有效信息编码为信息多项式M(x):M(x)=1010B=x3+x1;

(2).选择k+1位的生成多项式G(x)作为约定除数:G(x)=x3+x+1=1011B;

(3).把M(x)左移k位,可得到n+k位的M(x)·x3=1010000B;

     M(x)·x3模2除以G(x)得到余数R(x)=011B

(4).将M(x)·R(x)与余数R(x)做模2加,把R(x)拼接到M(x)·x3的后3位,得到CRC校验码为M(x)\cdot x^{3}+R(x)=1010011B

求得CRC循环码为 1010011B

注意事项:

(1)B表示二进制

(2)二进制减法取异或,即减数与被减数相同取0,减数与被减数不同则取1

         0\oplus 0=0,0\oplus 1=1,1\oplus 0=1,1\oplus 1=0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值