概述
① 为什么要使用汉明码
② 什么是汉明码
说白话就是你要验证的代码(n位)和你的校验位(k位)组成的n+k位汉明码
③ 代码长度与校验位位数
假设你要验证的二进制代码为 n 位,那么汉明码的校验位应该为 k 位,则应满足下面这个式子:
如果嫌麻烦不想计算,哈哈,可以记住下面这个图片
④ 校验位放哪
汉明码是一种数据传输中校验和纠错的手段。当传输一个二进制码时,它在每一个2的整数次幂位插入校验位,P代表校验码,D就是数据
那知道了校验位放的位置,那咋知道怎么去校验,看下面↓↓↓↓
⑤ 校验位怎么校验
汉明码校验方式采用分组奇偶校验:
■ 咋分组:
就是每个校验位负责一些数据:
凡是位置符合这种形式的,XXX1,归到P1;
凡是位置符合这种形式的,XX1X,归到P2;
凡是位置符合这种形式的,X1XX,归到P3;
凡是位置符合这种形式的,1XXX,归到P4;
……
如:
第一组:如P1负责的数据位置是1,3,5,7,9,11……(转换成二进制位置符合XXX1)
第二组:如P2负责的数据位置是2,3,6,7,10,11,14……(转换成二进制位置符合XX1X)
第三组:如P3负责的数据位置是4,5,6,7,12,13……(转换成二进制位置符合X1XX)
第四组:如P4负责的数据位置是8,9,10,11,12,13……(转换成二进制位置符合1XXX)
……
■ 咋奇偶校验:
偶校验就是保证校验码 (P)负责的数(D)中的1是偶数个
奇校验就是保证校验码 (P)负责的数(D)中的1是奇数个
我们用个小图直观的感受一下:(下面这个图算题的时候超级好用)
⑤ 校验例题
1.根据配偶原则,1100的汉明码为________
解析:(下面这个图要会用啊,做题贼拉方便)
根据第③步可知,这个代码有4位,则需要3位检测码,做题时可以画这样一个图,把2的整数幂的位数找出来作为检测位,剩下的位置从左到右将原二进制代码填进去
然后可知:
P1负责1,3,5,7位,又因为要根据配偶原则,则需要这四位里面的1位偶数个,由上图知道,3为1,5为1,7为0,1已经为偶数个了,则P1应该为0,才满足配偶原则,即
同理可知P2负责2,3,6,7位,3为1,6为0,7为0,则P2应为1
同理可知P3负责4,5,6,7位,5为1,6为0,7为0,则P3应为1
所以汉明码就是把上面连起来 0111100
可以自己练习一下哈:(ps:注意配奇原则就是是1的个数为奇数个)
根据配偶原则,1010的汉明码为___答案在最后_____.
⑥汉明码纠错过程(就是知道汉明码,咋求原码)
其实不会的时候多看例题最好理解,来个例题看一下子啊
例题1:已知接收到的汉明码为1101001(根据配偶原则),则欲传送的信息为______.
⊕:异或:相同为0,相异为1(也可以这样记,偶数个1为0,奇数个1为1)
第一小组:1,3,5,7位:对应1,0,0,1即 1⊕ 0⊕ 0⊕ 1=0
第二小组:2,3,6,7位:对应1,0,0,1即 1⊕ 0⊕ 0⊕ 1=0
第三小组:4,5,6,7位:对应1,0,0,1即 1⊕ 0⊕ 0⊕ 1=0
如果异或结果全为0,那么就是没有错误的,原码在3,5,6,7位上,所以原码为0001
例题2:已知接收到的汉明码为0100111(根据配偶原则),则欲传送的信息为______.
第一小组A1:1,3,5,7位:对应0,0,1,1即 0⊕ 0⊕ 1⊕ 1=0
第二小组A2:2,3,6,7位:对应1,0,1,1即 1⊕ 0⊕ 1⊕ 1=1
第三小组A3:4,5,6,7位:对应0,1,1,1即 0⊕ 1⊕ 1⊕ 1=1
从高到低排下来为A3A2A1 =110= 6(十进制),所以第6位出错了,第6位是1,是错的,计算机会自动的将1改为0, 则原码应为0101
PS:根据配偶原则,1010的汉明码为:1011010
最后
以上就是无聊毛衣为你收集整理的轻轻松松学会汉明码,nice!!!的全部内容,希望文章能够帮你解决轻轻松松学会汉明码,nice!!!所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复