1.编码

确定校验码的位数

确定校验码中信息位D与校验位P的位置

确定校验位与信息位的关系



例题:

在这里插入图片描述
①确定校验码的位数:
设海明码N位
数据位 k=16 位(可从图中,输入:16位知)
校验位 r 位

海明码公式如下
N= k + r ≤ 2r-1

根据公式可以算出
校验位 r=5,海明码位 N=21


②确定校验码中 信息位D 与 校验位P 的位置 : (第 i 个校验位在校验码中的位置为 2i-1 )

根据①可知有5个校验位21个海明码16个数据位(信息位):
P1=21-1=1
P2=22-1=2
P3=23-1=4
P4=24-1=8
P5=25-1=16

确定校验位

H21 H20 H19 H18 H17 H16 H15 H14 H13 H12 H11 H10 H9 H8 H7 H6 H5 H4 H3 H2 H1
P5 P4 P3 P2 P1

确定好 校验位数据位 插空依次填好就好了

H21 H20 H19 H18 H17 H16 H15 H14 H13 H12 H11 H10 H9 H8 H7 H6 H5 H4 H3 H2 H1
D16 D15 D14 D13 D12 P5 D11 D10 D9 D8 D7 D6 D5 P4 D4 D3 D2 P3 D1 P2 P1

③确定校验位与信息位的关系 ( 信息位在校验码中位号 = 校验它的校验位位号之和 )
例如:D1所在海明校验码位号为H3,所以就要在P1(位号为H1),P2(位号为H2)对应处画 √,因此D1由P1与P2共同校验

海明校验码 H21 H20 H19 H18 H17 H16 H15 H14 H13 H12 H11 H10 H9 H8 H7 H6 H5 H4 H3 H2 H1
对应位 D16 D15 D14 D13 D12 P5 D11 D10 D9 D8 D7 D6 D5 P4 D4 D3 D2 P3 D1 P2 P1
P5
P4
P3
P2
P1

全部弄完后就可以写出下面这个表达式
P5=D16⊕D15⊕D14⊕D13⊕D12
P4=D11⊕D10⊕D9⊕D8⊕D7⊕D6⊕D5
P3=D16⊕D15⊕D11⊕D10⊕D9⊕D8⊕D4⊕D3⊕D2
P2=D14⊕D13⊕D11⊕D10⊕D7⊕D6⊕D4⊕D3⊕D1
P1=D16⊕D14⊕D12⊕D11⊕D9⊕D7⊕D5⊕D4⊕D2⊕D1

将其用画出来就实现了海明编码

在这里插入图片描述

在这里插入图片描述

2.解码

G5=P5⊕D16⊕D15⊕D14⊕D13⊕D12
G4=P4⊕D11⊕D10⊕D9⊕D8⊕D7⊕D6⊕D5
G3=P3⊕D16⊕D15⊕D11⊕D10⊕D9⊕D8⊕D4⊕D3⊕D2
G2=P2⊕D14⊕D13⊕D11⊕D10⊕D7⊕D6⊕D4⊕D3⊕D1
G1=P1⊕D16⊕D14⊕D12⊕D11⊕D9⊕D7⊕D5⊕D4⊕D2⊕D1

检查情况
G6=0且G5G4G3G2G1=00000,表示无错;
G6=0且G5G4G3G2G1≠00000,表示两位错;
G6=1且G5G4G3G2G1≠00000,表示一位错;
G6=1且G5G4G3G2G1=00000,表示校验位错;

在这里插入图片描述
在这里插入图片描述
小知识:
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐