循环冗余校验码(CRC)详解

书面解释

循环冗余校验码(CRC)广泛应用于数据通信领域和磁介质存储系统中。它利用生成多项式为k个数据未产生r个校验位来进行编码,其编码长度为k+r。由此可知,循环冗余校验码是由两部分组成的,左边为信息码(数据),右边为校验码。若信息码占k位,则校验码占n-k位。其中,n为CRC码的字长,所以CRC码又称为(n,k)码。校验码是由信息产生的,校验码位数越长,该代码的校验能力就越强。在求CRC编码时,采用的是模2运算。模2运算加减运算的规则是按位运算,不发生借位和进位。

通俗来讲,就是信息在编码的时候,在信息的尾部加入一些校验信息,让生成后的编码能够与生成多项式的值相除 余数等于0. 若接收方接收编码后进行校验运算 得出的计算结果余数不为0,则在传输的过程中出现了错误。

模2除法与普通除法的区别
普通二进制数的除法需要进位借位,然后将两个数进行进行减法运算,而模2除法不需要进位借位操作,两个数进行的是异或运算。异或运算即同则为0,不同为1,比如 1 和 0 为1,0 和 0 为 0 ,1 和 1 为 0
参考于下图
在这里插入图片描述

CRC计算例子

在这里插入图片描述
x4+x3+x+1对应二进制数为 11011,怎么算的呢?
x4对应的是1 0000 ,x3对应的是1000 ,x2为0 * 100,x对应10,这样相加起来的就是11011了。
然后根据生成多项式的最高指数位来确定补全余数的位数,x4+x3+x+1中的最高指数位为4,那就要在原始报文后添加4个0,再对其进行模2运算。

补充

CRC主要目的就是检查错误,设计的初衷没有考虑纠错,但不代表不能纠错。但是其纠错比较繁琐,在日常考试中都是考察CRC检错运算或求校验码。

  • 41
    点赞
  • 172
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值