前言
CRC和Hamming Code都采用了冗余编码技术,而前者是一种检错编码,而后者是一种纠错编码。冗余(CRC中的FCS帧检验序列、Hamming Code中的校验位)的作用之一就是帮助扩大码距,从而更容易找出错误甚至是纠错。那么为什么加冗余位就更容易检错纠错了呢?
码距:在信息编码中,两个合法代码对应位上编码不同的位数称为码距,又称海明距离。举例如下:10101和00110从第一位开始依次有第一位、第四、第五位不同,则海明距离为3。
码距越大,反映了码集中每两个码字之间的差别程度越大。那么从一个编码传输错误变成另一个编码的可能性越小。则其检错、纠错能力也就越强。
比如我们用0代表女,1代表男,(码距为1)这时候如果0在传输的过程中变成了1,那么我们没有办法判断是否发生了错误,因为1仍然是一个正确的编码。
但比如我们用00代表女,11代表男,(码距为2)那么我们就可以检测出1位发生错误的情况,比如00变成了10或者01.因为合法的编码只有00和11.
如果继续冗余,用000代表女,111代表男,(码距为3)同理。那么这时候我们可以检测出1位和两位发生错误的情况。同时,我们可以纠正一位发生错误的情况,比如如果出现了001,我们很清楚的知道它原来传输的正确编码应该是000,因为只有一位出错,所以不可能是111变过来的。
注:码距和检错纠错能力的关系(当d≦4)
(1)若码距d为奇数,则能发现d-1位错,或能纠正(d-1)/2位错
(2)若码距d为偶数,则能发现d/2位错,并能纠正(d/2-1)位错
回顾CRC(Cyclic Redundancy Code)
如果要发送的数据是 1101011011,生成多项式为10011
(1)生成多项式中,最高次为4,则添4个0,11010110110000
(2)1101011

本文深入探讨了CRC和HammingCode两种编码技术,详细解释了它们如何通过增加冗余位来增强数据传输的检错和纠错能力。通过具体实例,展示了码距的概念及其与检错纠错能力的关系。

5366

被折叠的 条评论
为什么被折叠?



