【学习笔记之计算机组成原理篇】海明码校验码的编码与解码

1.编码

确定校验码的位数

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

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



例题:

【学习笔记之计算机组成原理篇】海明码校验码的编码与解码_第1张图片
①确定校验码的位数:
设海明码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张图片

【学习笔记之计算机组成原理篇】海明码校验码的编码与解码_第3张图片

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,表示校验位错;

【学习笔记之计算机组成原理篇】海明码校验码的编码与解码_第4张图片
【学习笔记之计算机组成原理篇】海明码校验码的编码与解码_第5张图片
小知识:
【学习笔记之计算机组成原理篇】海明码校验码的编码与解码_第6张图片

你可能感兴趣的:(else)