汉明码

初学汉明码时,往往总是觉得很奇怪。其实原理很简单的。

我们先明确几个概念:

汉明码

设汉明距离为d。

我们再来看汉明码的判断标准:

          公式一:          如果要检测e个错码,则要求汉明距离  d≥e+1

          公式二:        若要纠正t个错码,则要求汉明距离 d≥2*t+1

          公式三:  若要同时检测e个错码而又纠正t个错码  则汉明距离d≥e+t+1(e≥t)


我们来简单思考一个,如何检测出错码?

其实很简单:只要我们错误的码无法变成正确的码。我们假设汉明距离为d,则只要你错误的位数小于d,不就无法得到正确的编码吗!所以公式一得证。

那我们来看公式二,想要纠正错码,那我们其实意义上就是让几个正确的码即使变化了几个位,我们仍能分清楚它是由谁变来的。

假设有两个正确编码A和B,此时要纠正的范围是t,如图示

汉明码

其实意义就是让正确的码在t位错码范围内不产生重叠。即公式二的意义是,在变化t位时编码A,B产生的错码不能相同。

所以我们要求d≥2*t+1,不然就会产生重叠。导致无法识别。

公式三可由公式一和公式二得。