莫道桑榆晚,为霞尚满天。这篇文章主要讲述软考网工难点分析之三 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。
大家可以自己练习一下这道考题:
【软考网工难点分析之三 CRC循环冗余校验】若信息码字为11100011,生成多项式 G(X)=X5+X4+X+1,则计算出的 CRC 校验码为 (16) 。
(16)A.01101 B.11010 C.001101 D.0011010
推荐阅读
- 谈谈网工考试的价值
- 我的学习工作经历,一个园林专业中专毕业生的IT之路
- 51CTO专家组独家发布(2009年下半年软考试题答案)
- 如何养成微软认证讲师(MCT)
- 每个程序员都应该经历一次软考
- 谈谈通过软考的感受,包括通过软考的经验
- 软考高级,考网规还是考项管()
- 软考的心得
- 相识相恋相伴与51CTO的故事