循环冗余校验码(计算机组成原理12)

本文详细介绍了循环冗余校验码(CRC)的基本思想、构造方法及检错能力。通过实例解析了CRC码的生成过程,包括信息码与生成多项式的关系,以及如何通过模2除法进行校验。强调了当2R>=K+R+1时,CRC码具备纠错能力。此外,还指出了CRC码在计算机网络中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

循环冗余校验码

视频链接地址:
https://www.bilibili.com/video/BV1BE411D7ii?from=search&seid=6420326887479343502

前言

在本篇中,你将掌握

  • 循环冗余校验码的基本思想和构造方法

在这里插入图片描述

1 循环冗余校验码

在这里插入图片描述

1.1 基本思想

循环冗余校验码的思想:数据发送、接收方约定一个“除数”(二进制的除数)

K个信息码 + R位校验码作为“被除数”,在检验时,判断余数是否为0来判断是否出错。

让我们来看个例子,如下图,已知生成多项式G(x),信息码为101001,求对应的CRC码。
在这里插入图片描述
二进制的除法规则,如上图所示,其相除过程为首先判断被除数当前最高位是否为1,若为1,则当前商为1,否则为0;然后对被除数和除数做“模2减”,即异或;之后,在“模2减”后若位数不足在最高位补0,重复首先的步骤,直至最后得到商和余数。
对于余数,余数的位数 = 除数的位数-1 = 校验码的位数。

1.2 构造方法

解法步骤

  1. 确定K、R以及生成多项式对应的二进制码
    K = 信息码长度 = 6,R = 生成多项式最高次幂 = 3 则校验码位数为 N = K+R = 9
    生成多项式G对应的二进制码为1101,对应x次幂的系数
  2. 移位
    信息码左移R位,低位补0(即在信息码后补R个校验位的0)
  3. 相除
    对移位后的信息码,用生成多项式进行模2除法,产生余数
    对应的CRC码:101001 001
    (相除过程见上图,其模2除法的余数 001 就是校验位)
  4. 检错和纠错
    发送方发送的数据为101001001记为 C 9 C 8 C 7 C 6 C 5 C 4 C 3 C 2 C 1 C_9C_8C_7C_6C_5C_4C_3C_2C_1 C9C8C7C6C5C4C3C2C1

接收方对接收的数据用约定好的1101进行模2除,若余数为000,代表没有出错;若余数为010,代表 C 2 C_2 C2 C 9 C_9 C9出错,其余数和出错位对应关系如下图
在这里插入图片描述

1.3 纠错检错

注意在上表中,出错位为1和8、2和9的余数两两相同,那么我们能推知循环冗余校验码只有检错的能力,而没有纠错的能力么?
 也不全对,因为在上述例子中,余数只有3位二进制码,只能表示8-1=7种(000表示没出错)出错位,但传输的位数为9位,故无法纠错。
在这里插入图片描述
对于确定的生成多项式,出错位与余数是相对应的

如果出错的位数并没超过余数所能表示的范围,则余数和出错位之间就是一一对应的关系

K个信息位,R个校验位,若生成多项式选择得当,且 2 R > = K + R + 1 2_R>=K+R+1 2R>=K+R+1则CRC码可以纠错

2 小结

在这里插入图片描述
本篇重点:
(1)循环冗余校验码的构造方法,如何通过给出的K个信息位和最高次为R的生成式构造循环冗余校验码(K个信息位 + R个校验位(余数));
(2)循环冗余校验码的校验方法:通过与生成式模2除,得到R的余数,若为000则没错,否则出错,且有可能纠错

本篇也是计算机网络的重点,需要熟练掌握CRC的计算构造方法。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿芒aris

感谢大佬,让我来帮助您解决问题

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值