深入浅出计算机组成原理
徐文浩
bothub 创始人
70433 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 62 讲
深入浅出计算机组成原理
15
15
1.0x
00:00/00:00
登录|注册

50 | 数据完整性(下):如何还原犯罪现场?

课后思考
推荐阅读
编码过程
纠错码重要性
海明距离
编码方式
纠错原理
纠错能力
纠错码
检错码
校验码
总结延伸
海明码
纠错码

该思维导图由 AI 生成,仅供参考

讲完校验码之后,你现在应该知道,无论是奇偶校验码,还是 CRC 这样的循环校验码,都只能告诉我们一个事情,就是你的数据出错了。所以,校验码也被称为检错码(Error Detecting Code)。
不管是校验码,还是检错码,在硬件出错的时候,只能告诉你“我错了”。但是,下一个问题,“错哪儿了”,它是回答不了的。这就导致,我们的处理方式只有一种,那就是当成“哪儿都错了”。如果是下载一个文件,发现校验码不匹配,我们只能重新去下载;如果是程序计算后放到内存里面的数据,我们只能再重新算一遍。
这样的效率实在是太低了,所以我们需要有一个办法,不仅告诉我们“我错了”,还能告诉我们“错哪儿了”。于是,计算机科学家们就发明了纠错码。纠错码需要更多的冗余信息,通过这些冗余信息,我们不仅可以知道哪里的数据错了,还能直接把数据给改对。这个是不是听起来很神奇?接下来就让我们一起来看一看。

海明码:我们需要多少信息冗余?

最知名的纠错码就是海明码。海明码(Hamming Code)是以他的发明人 Richard Hamming(理查德·海明)的名字命名的。这个编码方式早在上世纪四十年代就被发明出来了。而直到今天,我们上一讲所说到的 ECC 内存,也还在使用海明码来纠错。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

海明码是一种纠错码,能够在数据出错时纠正错误。相比于校验码只能检测错误,海明码可以不仅告诉我们数据出错,还能指出错误的位置并进行纠正。文章介绍了海明码的基本原理和编码方式。海明码的纠错能力有限,但通过额外的冗余信息,可以对单比特翻转的数据进行纠错。文章还详细介绍了海明码的编码方式,通过奇偶校验码计算校验位,从而实现对数据位的纠错。海明码的编码方式可以通过程序自动生成,无需人工设计编码方案。海明码的纠错过程类似于推理探案,通过额外信息找出数据出错的位置,实现纠错。整体来说,海明码是一种高效的纠错码,能够在数据传输中提高纠错效率。文章还通过形象的海明距离概念,让读者更直观地理解了海明码的作用。文章最后提到了海明码的应用和推荐阅读内容,为读者提供了进一步学习的方向。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出计算机组成原理》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(43)

  • 最新
  • 精选
  • Tristen陈涛
    不太理解海明距离的作用,如果两个接收到的数据,它们只要至多有一个错误位,不是一样都能自行纠正过来,与海明距离何干啊? 麻烦请解释一下哈

    作者回复: 不是啊,比如一个有效的数据二进制是 101,另一个是 110,海明距离是2。那么我们收到 111,这是一个无效数据,我们怎么知道,应该纠正成101还是110呢?

    2019-09-09
    8
    12
  • 炎发灼眼
    老师,看完这章,有两个问题想不通,望解释 第一,任何两个我们要传输的数据,海明距离起码要为3,这个在实际操作中怎么能控制呢 第二,如果两个数据海明距离是2,就会有一个出错的数据,距离两个正确的数据距离都是1,无法判断到底要纠错到哪一个正确的数据,但是海明码不是可以唯一确定出错位吗,有了出错位,不是就可以知道需要纠错到哪一个正确的数据了吗

    作者回复: 炎发灼眼同学, 你好,第一点是在编码过程中就控制完了的,通过7-4海明码编码的数据,任何两条数据之间的海明距离至少是3 第二点没错,如果我们编码没有考虑校验位会出错,就会遇到这个问题,导致无法纠错。

    2019-08-27
    2
    6
  • LDxy
    大学通信原理的课程内容,已经忘得差不多了

    作者回复: LDxy同学你好, 没错,这个很多是放在通信原理或者信息论里的,正好可以复习一下。

    2019-08-26
    4
  • 注册新人
    海明距离,为什么要两个数据呢?不应该是原数据->错误数据,通过海明码判断出错的位置,还原为原数据,两个数据做什么用的呢?

    作者回复: 注册新人同学, 你好,抱歉,没太理解你的问题。你这里说的两个数据,具体是指什么?

    2019-12-18
    4
    2
  • 暴风雪
    我看第二遍就明白了

    作者回复: 👍

    2019-09-15
    2
    1
  • WoLoong
    这章有点难

    作者回复: 能说说具体难在哪里么?的确反馈这一讲不容易理解的同学比较多

    2019-09-09
    2
    1
  • 暴风雪
    仅仅通过这篇文章理解海明码,会很难明白,需要借助其他的学习资料

    作者回复: 这一篇有不少同学说不太容易明白,如果可以的话,可以具体留言讲一下主要难以理解的是哪一部分么?

    2019-09-02
    1
  • -W.LI-
    校验位记录的是什么啊?一个校验位只有0和1。可是那个校验位上有值的数字大于这个数啊?

    作者回复: -W.LI-同学 你好,这个是奇偶校验,奇数个1就是1,偶数个1就是0

    2019-08-26
    1
  • leslie
    应当是根据运算的结果知道哪里错了吧?奇偶校验不是有个最终的值么,是不是这个有一个判断标准,从而让我们不需要知道具体的,可以通过某个判断值去反推哪个错了。 网络IP不是也有也有类似的二进制计算么:是不是相对原理有点类似啊?之前老师有堂课不是讲了影片的纠错么:这个是不是也有相关性;几门课程同时学习中,如果知识打岔了;请老师多包涵。

    作者回复: leslie同学, 你好,网络里面的确也有海明码,也是为了解决传输中数据可能出现单比特错误的问题。

    2019-08-26
    1
  • 西门吹牛
    这里说的海明码,就是在大学学通信原理这门课的时候,是叫汉明码,汉明距离,完全一致,多年不看,咋一看,似曾相识,我又翻了翻之前的通信原理课本,当年考研考通信原理,满分150,考了140,还有循环码,循环码的多项式表达,生成矩阵,校验矩阵,最小汉明距离和纠错能力,一下子都回想起来了
    2020-07-09
    1
    17
收起评论
显示
设置
留言
43
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部