海明码最通俗易懂的讲解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
校验码 Pi (i 取 1,2,3,4)在编码中的位置为 2i1 ,如下表所示:
M1 M 2 M 3 M 4 M 5 M 6 M 7 M 8 M 9 M10
甲 P1
P2
P3
P4
③ 确定数据的位置 这个很简单,除了校验码的位置其余的就是数据的位置,填充进去就可以了,于是可以
把数据信息先填进去,见“乙”行,下面就是最关键的部分,求出校验位的值啦!!!
公式:
e1 M1 M 3 M 5 M 7 M 9 e2 M2 M 3 M 6 M 7 M10 e3 M4 M 5 M 6 M 7 e4 M8 M 9 M10
然后将第③步求出那张表中的数据对应过来,即
e1 P1 D1 D2 D4 D5 e2 P2 D1 D3 D4 D6 e3 P4 D2 D3 D4 e4 P8 D5 D6 如果海明码没有错误信息, e1、e2、e3、e4 都为 0,等式右边的值也得为 0,由于是异 或,所以 Pi (i 取 1,2,3…)的值跟后边的式子必须一样才能使整个式子的值为零,故: P1 D1 D2 D4 D5 P2 D1 D3 D4 D6 P3 D2 D3 D4 P4 D5 D6
有必要死记硬背,该公式是有规律可循的,基本没有任何一本教材讲过,笔者也是无意中在
一篇论文中看见,所以与大家分享。
假设出错位为 e1、e2、e3、e4 ,现在我们需要做的就是将 M1 、M 2 、…… M 10 和 e1、e2 、 e3、e4 的关系对应出来,只要这个关系出来了,所有的问题都解决了。演示几个,剩下 的考生自己推导(看了肯定会)。 M1 下标中的 1 可以表示成 0001,这里的 0001 分别对应 e4、e3、e2、e1(倒过来看),由于 e1 的值为 1,所以 M1 只和 e1 有关。 M 3 下标中的 3 可以 表示成 0011,所以 M 3 和 e1、e2 有关;M 7 下标中的 7 可以表示成 0111,所以 M 7 和 e1、e2 、 e3 有关;其他以此类推,只需要将这些有关的用异或符号 连接起来即可,最后可得如下
下面只需要将值代入计算即可,
P1 D1 D2 D4 D5 = 1 0 1 0 = 0 P2 D1 D3 D4 D6 = 1 1 1 1 = 0 P3 D2 D3 D4 = 0 1 1 = 0 P4 D5 D6 = 0 1 = 1 大功告成,把 Pi 的值填写到第③步求出的那张表中,看“丙”行,就可以得到海明码。
补充两个概念:
(1)海明码如果要检测 d 位错误,需要一个海明距为 d+1 的编码方案;如果要纠出 d 位错误,需要一个海明距为 2d+1 的编码方案,记住即可;
(2)海明码的纠错能力恒小于等于检错能力。 以上为海明码全部考研知识点。
④ 最后将 Pi 填入数据位,海明码就形成了
校验海明码的过程:
① 直接上来写出出错位 e1,..... em 与 M1,..... M N 的对应关系,计算出 e1,..... em 的值 ② 求出二进制序列 em ,..... e1 对应十进制的值,则此十进制数就是出错的位数,取反即
可得到正确的编码。
e1 M1 M 3 M 5 M 7 M 9 = 0 1 1 1 0 = 1 e2 M2 M 3 M 6 M 7 M10 =0 1 1 1 1 = 0 e3 M4 M 5 M 6 M 7 =0 1 1 1 = 1 e4 M8 M 9 M10 = 1 0 1 = 0 按照 e4、e3、e2、e1的排序方式得到的二进制序列为:0101,恰好对应十进制 5,是不
海明码求解具体步骤: ① 确定校验码的位数 k ② 确定校验码的位置 ③ 确定数据的位置 ④ 求出校验位的值 下面开始实战练习。假设我们要推导 D= 101101 这串二进制的海明码,按照步骤一步步
来: ① 确定校验码的位数 k
数据的位数 k=6,按照上面说的公式来计算满足条件 r 的最小值,如下公式:
M1 甲 P1

M2 M3
P2
D1
1
M4 M5 M6 M7
P3
D2
D3
源自文库
D4
0
1
1
M 8 M 9 M10
P4
D5
D6
0
1
④ 求出校位的值 这个公式不是难,99%左右的考生都能看懂海明码的求解过程,但是真正能够过目不忘
的相信就是极少数了,很多考生在论坛抱怨躺在床上眼睛一闭,一睁,就忘记了一半。眼睛
再一闭,一睁,基本上就等于没有看了。与其这样,倒不如考前几天突击一下。其实完全没
是找到了出错的位置?那赶快把第五位取反吧。
让我们再来总结一下吧:
编写海明码的过程:
① 确定校验位的位数
② 把数值为按序写出来,M1,..... M N ,校验码 Pi(i 取 1,2,3,4)在编码中的位置为 2i1 ,
将校验码的位置写出来,然后按序写出数据位
③ 求出出错位 e1,..... em 与 M1,..... M N 的对应关系,然后就可以写出 Pi 与数据位的对应 关系,进而求出 Pi
态来表示数据正确的情况,所以 2r 1 k r 才能检查一位错误,即 2r k r 1。例如, 信息数据有 4 位,由 2r k r 1得 r>=3,也就是至少需要 3 位监督数据才能发现并改正 1
位错误。比如:给 8 个学员进行编号,可以用三位数来编码:学号为 000 、001 ……、111; 也可以用五位数来编号:学号为 00000 、00001 、00010 、……、00111,但是没有必要用 五位呀,只要能满足编码的要求就可以了,所以我们只需要求出满足条件的最小的 k 值即可。
海明码(又称汉明码):海明码是在信息字段中插若干位数据,用于监督码字里的哪一位数 据发生了变化,具有一位纠错能力。假设信息位有 k 位,整个码字的长度就是 k+r;每一位
的数据只有两种状态,不是 1 就是 0,有 r 位数据就应该能表示出 2r 种状态,如果每一种状
态代表一个码元发生了错误,有 k+r 位码元,就要有 k+r 种状态来表示,另外还要有一种状
M1 M 2 M 3 M 4 M 5 M 6 M 7 M 8 M 9 M10
甲 P1
P2
D1
P3
D2
D3
D4
P4
D5
D6
乙0
0
1
0
0
1
1
1
0
1
即最后的海明码为:0010011101; 但是考研知识点还没有完,知道了怎么编写海明码,当然需要知道怎么校验,如下: 现在假设第五位出错了,也就是第五位在传输的过程中被改为”1“了。即得到的数据 为 0010111101。现在要找出错误的位置(假设现在不知道出错的位置)。 继续使用:
2r 1 k r 即: 2r 7 r
解此不等式得:满足不等式的最小 r=4,也就是 D=101101 的海明码应该有 6+4=10 位, 其中原数据 6 位,校验码 4 位。 ② 确定校验码的位置
不妨设设这 4 为校验码分别为 P1 、P2 、P3 、P4 ;数据从左到右为 D1 、D2 、……、D6 。 编码后的数据共有 6+4=10 位,设为 M1 、 M 2 、…… M 10 。
相关文档
最新文档