软考
APP下载

冗余编码的两种校验码

冗余编码是信息传输必不可少的一部分。它通过在原始数据中添加冗余字节来增强数据的可靠性。校验码是冗余编码的一种应用,用于检测和纠正数据传输中的错误。本文将介绍冗余编码中的两种常见校验码:循环冗余校验码和海明码。

1. 循环冗余校验码

循环冗余校验码(Cyclic Redundancy Check,CRC)是一种基于二进制除法的校验码。它通过取模运算来实现。具体而言,将原始数据和一组生成多项式进行除法运算,余数加入到数据帧末尾,生成的帧即为带有CRC校验码的帧。

CRC码的优点在于其高效性和可靠性。它可以检测出多达n个位错误,n为该CRC码的位数。而且,CRC码的计算可以通过硬件电路实现,速度很快,适用于高速传输。

2. 海明码

海明码(Hamming Code)是一种用于检测和纠正错误的线性二元码。它是由美国数学家理查德·海明(Richard Hamming)在上世纪50年代中期发明的。

海明码通过在数据中添加额外的校验位来实现错误检测和纠正。对于一个长度为n的数据块,它添加k个校验位,使得数据帧的总长度为n+k。校验位的位置在数据帧中的位置上形成一种二进制码,表示对应数据位的奇偶性。

海明码的主要优点是它可以检测和纠正多达t个错误(t为海明码所纠正的错误位数),同时也能够检测出其无法纠正的错误。然而,由于其中添加了冗余位,数据帧长度比原始数据长,不适用于带宽受限的网络环境。

总之,CRC码和海明码是冗余编码中常见的两种校验码。它们在不同的场合下有不同的应用,具有各自的优点和缺点。

备考资料 免费领取:软件设计师报考指南+考情分析+思维导图等 立即下载
真题演练 精准解析历年真题,助你高效备考! 立即做题
相关阅读
软件设计师题库