计算机知识回顾:海明码

更多分享:http://www.cherylgood.cn

  • 海明码,又名汉明码,是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名。海明码在传输的消息流中插入验证码,当计算机存储或移动数据时,可能会产生数据位错误,以侦测并更正单一比特错误。由于海明编码简单,它们被广泛应用于内存(RAM)。

校验原理:


  • 错误校验码有多种,海明码也利用了奇偶校验位的概念,通过在数据位后面增加一定的比特,可以验证数据的有效性。利用一个以上的校验位,海明码不仅可以验证数据是否有效,还能在数据出错的情况下校验得出错误的明确位置。

注:奇偶校验概念补充:

  • 偶校验:如果给定的数据1的个数是奇数,那么偶校验位为1,使数据的1保持偶数,否则位0;
  • 奇校验:如果给定的数据1的个数是偶数,那么奇校验位为1,使数据的1保持奇数,否则为0;
  • 奇偶校验的选择都是事先规定的。
  • 优点:开销低,只需要增加1为比特就可以得出数据的正确性,但是不能得出出错的数据位置,即不能矫正,只能丢弃重发,而且数据也有可能两个比特同时出错,此时奇偶校验可能是检测不出来的,但在普通微型计算机中这个概率是微乎其微的。

纠错原理:(来自http://bbs.51cto.com/thread-889899-1.html)写的很好。


假设要传输的数据是a4a3a2a1,数据位长度为4位,设校验位长度为m,那么应该满足2m-1>=m+4。解出,m=3。这个不等式要解释吗?好吧,我给大家解释下,校验位为m位,那么,校验码可以表示的最大十进制数字为2m-1,去掉一位的原因是全0表示传输的数据没有错误!校验码表示能够纠正的二进制数字位数,为了保证能够纠正数据位最高位。那么2m-1至少应该大于等于数据位和校验位长度的总和!好了,设校验码为r3r2r1。根据海明码规定,校验位应放在数据位的2i-1的位置,整理好后设为M7M6M5M4M3M2M1。

好了,最后的问题,怎么计算校验码呢?它怎么纠错呢?这里我们设海明码的监督关系式为S3S2S1。请大家仔细想一想,S1是不是代表三位二进制校验码的最低位,让我们看看有多少位数字参与了S1的运算,很容易看出M1、M3、M5、M7,所以S1=M1⊕M3⊕M5⊕

M7(为什么是这样呢?这里也给大家说明一下。我们看M的下标,它代表什么呢?明白吗?它代表的是数字在传输数据的第几位。7=4+2+1,5=4+1,3=2+1,1=1。可见,这几位数字均参与了第一位的运算,这样,S1=1就能代表数据位的第一位出错了!),同理,S2=M2⊕M3⊕M6⊕M7,S3=M4⊕M5⊕M6⊕M7。我们再来看这三个监督关系式
上面我们说到,要想数据位没有错误,S3S2S1=000,通过这可以计算出r3r2r1,因为S1=0,根据异或运算,将M3⊕M5⊕M7看作一个整体,M1=M3⊕M5⊕M7,r1=M1。同理可以计算出r2r1。那么纠错到底是怎么实现的呢?请大家睁大眼睛仔细看上面三个监督表达式。正常情况下,S3S2S1均为0,我们假设M3出现了错误,发生了跳变,那么S2S1将变成什么呢?如果你不知道的话请往回去看看我说的关于异或运算的知识。由上面的监督关系式发现M3参与了S2S1的运算,所以在M3发生跳变的情况下S2S1也将发生跳变,由0变为1,但由于S3未参与M3的运算,其值不变,仍为0。所以监督关系式S3S2S1=011=3,所以在传输数据的第三位出现了错误。同理,可发现M6参与了S3S2的运算,当运算出错时,监督关系式为110=6,也刚好可以判断出是传输数据的第六位出错了。其它的数据位我就不一一举例了

小结:


N=K+r≤2^r-1

  • N:包含校验码的数据总位数;
  • K:数据位数;
  • r:校验码位数;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容

  • MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA...
    没能唱给你的歌曲阅读 959评论 2 6
  • 一、概要 1、数据的表示:数制及其转换、原码、反码、补码、移码、浮点数、溢出、算...
    _Jason___阅读 3,134评论 0 5
  • 海明(汉明)码是广泛采用的一种有效的校验码,它实际上是一种多重奇偶校验码。 海明码的原理就是在有效信息位中加入几个...
    Julianlee107阅读 17,673评论 0 6
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,623评论 18 399
  • 檀香茶色古几,紫砂温润的杯地,茶洌清碧,翻几卷茶经品着陆羽,菊杞淡淡香气,呷尝轻咋漫过几个世纪。 时光老去,泛黄残...
    呼啸街车阅读 268评论 0 1