循环冗余校验CRC的介绍

一、简介
循环冗余校验CRC(Cyclic Redundancy Check)是数据通信领域中最常用的一种差错校验码。该校验方法中,使用多项式出发(模2除法)运算后的余数为校验字段。CRC只能实现检错,不能实现纠错,使用CRC需要双方约定一个生成多项式,此处我们称为G(x)
校验思想:
原始数据将其左移k位,被长度为k+1位的生成多项式相除,所得的k位余数则构成k个校验位。
发送方:在原始信息后追加若干校验位,使得追加的信息能被生成多项式G(x)整除;
接收方:接收到的信息用生成多项式G(x)整除,如没有余数则认为没有错误,否则认为发生错误。
二、举例证明校验位的生成过程
假设原始信息为11001,CRC的生成多项式为G(x)=x^4+x+1
(1)发送方生成发送消息的过程
a确定被除数
方法:在原始信息位后添加r位0校验位—生成多项式的阶数r
本题中为110010000,因为G(x)=x^4+x+1最高阶数为4
b确定除数
方法:从生成多项式中得到,x的幂指数存在的位置为1,不存在的位置为0
本题中为:10011
c生成CRC校验码
方法:使用被除数和除数进行模2除法运算–不进位不借位的除法运算
通过进行如下计算,得到校验码是1101,即最后发送的数据是110011101
在这里插入图片描述
说明:最后如不是1101,而是101,则左侧使用0补齐位数,实际为0101.

(2)接收方进行校验
接收方的CRC校验过程与生成过程类似。接收方接收带校验的信息,用多项式G(x)来除。余数为0,则表示信息无误。
如接收方接收到是正确的信息110011101,则校验过程如下:
在这里插入图片描述
如接收方接收的是错误信息,则校验过程如下:
在这里插入图片描述
三、计算方法补充-模2除法
与算术除法类似,但是每一位除的结果不影响其他位,不向上借位,实际是按位进行异或(相同为0,不同为1)
计算过程:
1、被除数首位是几就商几
被除数的首位为1,商为1
被除数的首位为0,商为0
2、异或运算
3、去首位补末位
异或后,首位一定是0(后续需要舍掉这个0首位)
补末位(或说是落位),再上商

ps:当被除数的位数小于除数时,其余位均为余数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值