软考网工难点分析之三 CRC循环冗余校验

在数据传输的过程中,不可避免会出现差错,为判断一个数据块中是否存在传输错误,发送方可在数据块中加入一些冗余信息,使接收方可通过这些冗余信息判断传输是否出错,这些加入的冗余信息称为差错编码。

差错编码分为检错码和纠错码。检错码只能让接收方判断数据块是否有错,但无法确认错误的位置,主要有奇偶校验码和CRC循环冗余码。纠错码不仅能发现错误,虚拟主机,而且能纠正错误,主要是海明码。由于纠错码开销较大,所以不适合于计算机通信。在计算机通信中主要使用检错重发方法,主要使用的是检错码,其中CRC是一种能力相当强的检错码,并且实现编码和检错的电路比较简单,因而得到了广泛的应用。

CRC编码主要用于数据链路层,它的基本思想将二进制位串看成系数为0或1的多项式。一个n位的帧被看成是n-1次多项式的系数列表。最左边是xn-1项的系数,接着是xn-2项的系数,依此类推,直到X0项的系数。如二进制数11100011可以表示为多项式X7+X6+X5+X+1。同样的,多项式X4+X+1,可以表示为二进制数10011。

假设发送方要发送的数据帧是1010101010,在进行CRC编码时,发送方和接收方必须事先商定一个生成多项式,如X4+X+1,对应的二进制数为10011,网站空间,其最高阶为4,则在帧1010101010后面附加4个0,成为10101010100000。用10101010100000除以10011,得到的余数就是CRC校验码。

这个除法用到的是异或运算,基本规则是两个相同的数相除,其结果是0,两个不同的数相除,其结果是1。最终得到的CRC校验码为0100(生成多项式的最高阶为几,就可以得到一个几位的CRC校验码),网站空间,然后将10101010100000用模2减法(实际上也是异或运算)减去CRC校验码0100,就得到了最终实际要传输的数据帧10101010100100。

大家可以自己练习一下这道考题:

若信息码字为11100011,生成多项式G(X)=X5+X4+X+1,则计算出的CRC校验码为(16)。(16)A.01101B.11010C.001101D.0011010

本文出自 “一壶浊酒” 博客,转载请与作者联系!

而只有在充满了艰辛的人生旅途中,

软考网工难点分析之三 CRC循环冗余校验

相关文章:

你感兴趣的文章:

标签云: