CRC循环冗余校验纠错中循环左移的原因以及一些新感受

本文详细解析CRC循环冗余校验中循环左移的目的,阐述了如何通过余数变化来定位错误位。在仅有一位错误的情况下,通过不断左移和除法操作,可以确定错误位于最后一位。同时,介绍了如何利用生成多项式在最后几位的异或运算来快速识别错误位置,简化错误纠正过程。

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

CRC循环冗余校验纠错中循环左移的原因以及一些新感受

问题的描述

理解

已知前提

1.我们讨论的是只有一位代码出错的情况,多位出错的情况由于
  纠错代价过大而直接丢弃。
2.CRC循环冗余检验的余数具有循环的特点。
3.对余数左侧补零然后除以生成多项式的余数是该余数对应的出错位的
  前面一位出错的代码对应的余数。
4.每一个余数对应一个出错代码以及出错的位置。
左移的需求背景:

如图: 在这里插入图片描述
虽然余数(全0已排除)在一定条件下可以说是唯一对应一个错误代码,但除了后面 l e n ( G ( x ) ) − 1 len(G(x))−1 len(G(x))1位可以快速确认外,其余的都很难找到对应关系。

为什么需要左移

循环左移到对应的余数为001时,我们可以确定此时的二进制代码的最后一位一定是错的,其余的都是对的。
请添加图片描述
我们根据第一张图可知知道其实100对应的是倒数第三位出现错误,但我们当时不知道,所以我们会通过求这个余数的下一个余数,然后再把对应的代码循环左移一次,由上面的图片我们可以知道,错误的位置也变成了倒数第四位,也就是说,余数左侧补零除以生成多项式得到的余数与错误代码循环左移一位还是对应的。所以我们可以不停的用新的余数补零再除以生成多项式得到新余数,同样的错误代码也不听的循环左移,知道新余数为001,这样我们就知道此时的错误代码的错误是在最后一位了。

纠正后,我们需要把代码复原,通过上面图片里的过程我们可以知道循环左移到余数循环出现时,代码便已经复原。

新知

假设生成多项式的长度为4,那么倒数第一位到倒数第四位的错误代码我们可是可以直接通过余数辨别出来的。
如果是倒数第三位出错了,那么在除法的最后一次异或运算中,上面的操作数的倒数第三位一定是错误的,其余的位都是和生成多项式一样的;如果是倒数第四位出错了,那么在最后一次异或运算中,上面的操作数的倒数第四位一定和生成多项式的倒数第四位不同,其余的都是一样的。
这后面的几位其实都只会影响其下面的与其对齐的数字。
如下图所示(错误位置已经用波浪线标出,有点丑,将就着看把/wul)
请添加图片描述
请添加图片描述

### 关于CRC循环冗余校验)的概念 CRC循环冗余校验,是一种基于多项式的数据校验技术,在计算机组成原理中占据重要地位[^1]。该机制通过特定的生成多项式对发送的数据进行处理,从而附加一个称为CRC校验码的结果到原始消息之后。接收端利用相同的生成多项式重新计算接收到的消息的CRC值并与附带的CRC校验码对比,以此判断传输过程中是否存在错误。 ### CRC的工作基本思想 其核心在于采用模2除法运算,将待传送的信息位串视为被除数,而预定义好的生成多项式则充当除数角色。经过一系列异或操作后得出最终商和余数值;其中,商通常会被丢弃不用,仅保留用于后续验证的余数部分——这便是所谓的CRC校验码[^3]。 ### 构造方法与纠错检错能力 为了确保良好的检错效果,CRC算法依赖精心挑选的生成多项式来进行编码。这些多项式能够有效捕捉单比特翻转以及突发性多位差错模式。值得注意的是,虽然理论上某些高级别的CRC版本确实支持有限度的一位自动纠正功能,但这并非所有应用场景下的默认特性[^4]。 ### 计算实例展示 考虑给定的二进制序列`10110011`及对应的生成多项式`G(X)=X^4+X^3+1`为例: ```plaintext 原信息: 10110011 左移四位: 101100110000 (准备做模2除法) ``` 执行模2除法规则如下所示: ```plaintext _______________________ G(x)| 101100110000 | 商(忽略) -1011 | _______ | 0000 | ... | 最后得到余数为:0100 即为所求得的CRC校验码。 ``` 因此,完整的带有CRC校验码的信息变为`101100110100`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值