[计算机组成原理]2-3、CRC循环冗余校验码

CRC循环冗余校验码

我们知道不同的校验码都有着独特的校验方法,CRC校验码则是根据余数来进行校验的。

简单的来讲就是现在我要给你发送数据,我们来保证这串数据除以5没有余数,那么你拿到数据后想要判断它有没有出错,是不是就要拿你接受到的去除以5,要是没有余数则没有出错,反之出错。

那么如何保证没有余数呢?这就是校验码的工作了。
在这里插入图片描述

K:信息位的个数。

R:校验码的个数。(等于生成多项式最高次数)


1. 确定被除数以及除数

现在基本思想我们知道了,但是说是规定除以一个数这个数一般不会直接给,而是给你多项式方程让你自己写出来。下面通过例题来说明比较好理解一点,
在这里插入图片描述
在这里插入图片描述

可以看到生成多项式在题干中的作用就是来给我们送除数的,除数是1101。
在这里插入图片描述

被除数就是在信息的基础上添加R个0在本例题中R=3,你说哪来的R?往上翻第一个图,R就是校验码的位数。

也就是说被除数是101001000


2. 求余数

我们都知道被除数除以除数等于商加余数,但是我们数据都是用二进制表示的,所以这里的除法跟小学的还不太一样,你先知道它叫模2除法,下面还通过同一个例题说明:
在这里插入图片描述

其实只要记住两个特点就行:

  • 一次只算一位。
  • 不借位等同于借位。

自己好好理解一下,就是与小学学的除法唯一不同就是0-1=1,关于第一条其实一次多算几位也没事,可以自己对比一下左右两种算法(左边是中规中矩的计算,步骤较繁琐),如果理解了为什么那就证明你已经掌握了,不理解就按照(左边那种)上面那两条规则一步一步算不会出错。


3.确定数据

求出余数后,将刚才添加的0换成余数,余数才是校验位上应该放的值,起初全部放0只是为了求余数。

例题种的余数为001,所以发送的数据应该为,101001001.(一般题目只让求CRC码到这里答案就出来了)


4. 检验

收到数据后检验,就是拿收到的除以约定好的除数,若余数为0(也就是没有余数)则无错,反之出错。


下面附上完整例题:

后检验,就是拿收到的除以约定好的除数,若余数为0(也就是没有余数)则无错,反之出错。


下面附上完整例题:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值