购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1950年

汉明码提出

错误,往往是难以避免的。人的思维会因心理、情绪和周围环境等影响而出错,计算机也会因各种干扰而出错。俗话说,失之毫厘,谬以千里,在大量的数据传输过程中,有时即使很小的错误也会引发严重的后果。有了错误当然就需要纠正。那么,计算机在通信和存储的过程中,是怎样以较小的代价检查并纠正错误的呢?

汉明Ⓢ

汉明,美国数学家。他1939年毕业于内布拉斯加大学艺术系,随后进入伊利诺伊大学香槟分校学习。1940年,汉明到贝尔实验室工作。他使用的贝尔V型计算机以穿孔卡片方式输入,这不免会产生一些读取错误。计算机设置了特殊代码,能够发现错误并闪灯提醒操作者进行纠正。但是在没有操作者的周末和下班时间,机器只会简单地转移到下一个工作。不可靠的读卡机发生错误后总是必须重新开始计算。这个问题让汉明变得愈来愈沮丧。

伊利诺伊大学香槟分校Ⓞ

汉明码的纠错原理

在没有纠错机制的编码中,如果某一段数据传输出现错误,往往是通过接收方发出出错信息,发送方重新传输这段数据来解决问题。如果传输通道所受干扰较大,则重传概率会很高,这大大加重了传输负担。1946年,汉明接受任务,着手解决通信中令人头痛的误码问题。1947年,他终于发明了一种能纠错的编码方式,并于1950年发表论文《检错码和纠错码》,正式提出著名的汉明码。

在接收端通过有纠错机制的译码自动纠正传输中的差错,称为前向纠错。通过在传输数据位中加入校验位(即保证数据位正确传输的数位,可通过对数据位进行特定计算得到),可以实现前向纠错。汉明码即是前向纠错编码的一种,它利用了奇偶校验的概念,通过在数据位后面增加校验位,以验证数据是否正确,减少重传概率,降低前向纠错的成本。汉明码包括检错和纠错的功能。利用一个以上的校验位,汉明码不仅可以验证数据是否正确,还能在数据出错的情况下指明错误位置。

进行奇偶校验的方法是:先计算数据中1的个数,通过增加一个0或1(即校验位),使1的个数变为奇数(称为奇校验)或偶数(称为偶校验)。例如,数据1001总共有4位,包括2个1,1的个数是偶数。如果是偶校验,那么增加的校验位就是一个0,反之,则增加一个1作为校验位。单一位置的错误可以通过计算1的个数是否正确来检测出来。对于同一段数据内有两个位置同时出错的情况,一位奇偶校验就检测不出来,但这种情况出现的概率很低。利用更多的校验位,汉明码可以检测两位码错误,每一位的检错都通过数据中不同的位组合计算出来。

虽然汉明码的发明是为了解决通信中的误码问题,但它对计算机同样有用。当计算机存储或移动数据时,可能会产生数据位错误,这时就可以利用汉明码来检测并纠错。汉明由于在数值方法、自动编码系统、错误检测和纠错码等方面的贡献,获得1968年度图灵奖。 cZKjv8SPeorWYyA4GOP72Dnd7/iE4pG2/YuNflKGBIaSBmCeUdW4RAXFhM5KATrl

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开