轻轻松松学会汉明码,nice!!!


① 为什么要使用汉明码

在这里插入图片描述

② 什么是汉明码

说白话就是你要验证的代码(n位)和你的校验位(k位)组成的n+k位汉明码


③ 代码长度与校验位位数

假设你要验证的二进制代码为 n 位,那么汉明码的校验位应该为 k 位,则应满足下面这个式子:
在这里插入图片描述
如果嫌麻烦不想计算,哈哈,可以记住下面这个图片

轻轻松松学会汉明码,nice!!!_第1张图片

④ 校验位放哪

汉明码是一种数据传输中校验和纠错的手段。当传输一个二进制码时,它在每一个2的整数次幂位插入校验位,P代表校验码,D就是数据
轻轻松松学会汉明码,nice!!!_第2张图片
那知道了校验位放的位置,那咋知道怎么去校验,看下面↓↓↓↓


⑤ 校验位怎么校验

汉明码校验方式采用分组奇偶校验:

■ 咋分组

就是每个校验位负责一些数据:

凡是位置符合这种形式的,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是奇数个

轻轻松松学会汉明码,nice!!!_第3张图片

我们用个小图直观的感受一下:(下面这个图算题的时候超级好用)
轻轻松松学会汉明码,nice!!!_第4张图片


⑤ 校验例题

1.根据配偶原则,1100的汉明码为________

解析:(下面这个图要会用啊,做题贼拉方便)
轻轻松松学会汉明码,nice!!!_第5张图片
根据第③步可知,这个代码有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
轻轻松松学会汉明码,nice!!!_第6张图片
所以汉明码就是把上面连起来 0111100

可以自己练习一下哈:(ps:注意配奇原则就是是1的个数为奇数个)

根据配偶原则,1010的汉明码为___答案在最后_____.


⑥汉明码纠错过程(就是知道汉明码,咋求原码)

在这里插入图片描述
其实不会的时候多看例题最好理解,来个例题看一下子啊

例题1:已知接收到的汉明码为1101001(根据配偶原则),则欲传送的信息为______.
轻轻松松学会汉明码,nice!!!_第7张图片
⊕:异或:相同为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(根据配偶原则),则欲传送的信息为______.
轻轻松松学会汉明码,nice!!!_第8张图片
第一小组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

你可能感兴趣的:(计算机组成原理)