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

循环冗余校验码的概念

希赛网 2023-12-03 10:35:56

循环冗余校验码 (Cyclic Redundancy Check, CRC) 是一种根据数据的校验码生成算法,用于检查数据传输时是否出现差错。它的基本思想是将数据看成一个由位构成的多项式,使用特定的生成多项式对其进行除法运算,将余数作为校验码。

CRC 码的应用十分广泛,例如计算机网络中的数据传输、磁盘存储和数据备份等场景中。在这些场景中,数据传输的正确性是一项非常重要的考虑因素,而 CRC 码的出现极大地提高了数据传输的可靠性。

下面从多个角度分析 CRC 码的概念和应用。

一、生成多项式

生成多项式是 CRC 码的核心之一,其可定义为 $x^n + g(x)$,其中 $n$ 是数据位数,$x$ 是不定元,$g(x)$ 是低于 $n$ 位的多项式。这种多项式通常被称为“生成多项式”。通过生成多项式,我们可以将任何一个数据(看作多项式)转化为一个更长的多项式,进而加入冗余位并计算 CRC 码。

二、数据传输

在计算机网络中,数据传输时可能会发生差错,例如传输的数据包在传输过程中被改变或遗失。此时我们就需要使用 CRC 码来检测错误。具体来说,发送方首先对要发送的数据计算 CRC 码,并将得到的 CRC 码放入数据包中。接收方在接收到数据包后,也计算一遍 CRC 码,并将其与数据包中的 CRC 码对比。如果两者不一致,那么数据包中的数据就被认为是出错的。

三、多项式转换

CRC 码中的多项式计算是通过模二除法实现的。给定一个二进制多项式 $M(x)$,以及一个生成多项式 $G(x)$,计算两者相除的余数 $R(x)$,就可以得到 CRC 码。具体实现时,可以将 $M(x)$ 向左移动 $n$ 位($n$ 是 $G(x)$ 的位数),然后从 $M(x)$ 中取出 $n$ 位,将它们与 $G(x)$ 进行模二加法运算。得到的结果和 $M(x)$ 的下 $n$ 位一起移入新的 $M(x)$,然后将 $M(x)$ 向左移动一位,重复上述过程,直至 $M(x)$ 的位数小于等于 $G(x)$ 的位数。

四、性能评估

CRC 码的性能很大程度上取决于生成多项式的选取。通常来说,生成多项式越长,CRC 码的性能就越好。不过,在实际应用中需要权衡长度和效率两个因素。此外,CRC 码的错误检测能力还和校验位的长度有关。对于长度为 $n$ 的校验码,它能检测出所有少于等于 $n$ 位的单比特错误和众多双比特错误。

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


软考.png


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

软考报考咨询

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