希赛考试网
首页 > 软考 > 软件设计师

循环冗余校验怎么算出来的

希赛网 2023-12-03 18:12:28

循环冗余校验(Cyclic Redundancy Check,简称CRC)是一种在数字通信中常用的差错校验方式。它是基于多项式的计算方法,通过产生一个固定长度的校验码对数据进行校验。那么,CRC校验是怎么算出来的呢?下面从多个角度分析这个问题。

1. 多项式的选择

在使用CRC校验前,需要先选择一个多项式。多项式的选择很关键,不同的多项式会产生不同的校验码,不同的校验码也会对校验效果产生不同的影响。通常在工业界和科研领域中,常用的多项式有CRC-32、CRC-16、CRC-12等。这些多项式都是经过数学分析和实测得到的,可以根据需要进行选择。

2. CRC计算过程

在实际计算中,CRC校验是通过除法实现的。首先,需要在原始数据末尾添加一段固定长度的校验码,然后按照选择的多项式进行除法计算,求出余数,将余数追加到原始数据尾部作为最终的CRC校验码。具体的计算过程如下:

将原始数据左移,使得校验码比原始数据位数多一个多项式的位数。例如,CRC-32的多项式是x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1,长度为33位,那么对于一个长度为n的数据,左移n + 33 - 1位,使得最高位为1。

将多项式左移,与左移后的数据异或,然后将结果与多项式进行除法,得到余数。

将余数作为新的输入数据,重复2的操作,直到求余的位数等于多项式的位数。

将上一步得到的余数作为最终的CRC校验码。

3. CRC校验的应用

CRC校验广泛应用于各种数字通信、存储和传输系统中,例如以太网、USB、硬盘等。它的主要作用是检测数据传输过程中是否存在错误。如果接收端计算得到的CRC校验码与发送端传输的CRC校验码不同,则说明传输过程中出现了错误,需要重新发送数据。

除此之外,CRC校验还可以用于数据完整性校验,在存储系统中可以对数据进行完整性验证,确保数据没有被篡改或损坏。

微信扫一扫,领取最新备考资料


软考.png


软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考报考咨询

微信扫一扫,定制学习计划