海明码的计算步骤

设数据位是n位,校验位是k位,则n和k必须满足关系: 2ᵏ-1>=n+k

设有数据为8位,那么 2⁴-1=15>8+4=12,则校验位为4位,即这个海明码长12位

令信息位为D7,D6,D5,D4,D3,D2,D1,D0,信息位从高往低占据编码位;
令校验位为P3,P2,P1,P0,校验位P0=2⁰=1,P1=2¹=2,P2=2²=4,P3=2³=8;
形成的海明码编码过程如下:

信息位D7的位数为12,12=8+4,所以D7的校验位组为P3(位数:8)和P2(位数:4),即信息位的位数=校验位组的位数之和。

海明码的计算步骤_第1张图片
由上表可得,P0参与了D0,D1,D3,D4,D6的检验,其他由此类推
P0=D0⊕D1⊕D3⊕D4⊕D6
P1=D0⊕D2⊕D3⊕D5⊕D6
P2=D1⊕D2⊕D3⊕D7
P3=D4⊕D5⊕D6⊕D7

这样子就可以算出整个海明码的值了。

例子:
设数据为01101001,求海明码。

数据位为8,则2⁴-1=15>8+4=12,则校验位为4位,即这个海明码长12位;
D7D6D5D4D3D2D1D0=01101001;
P0=2⁰=1,P1=2¹=2,P2=2²=4,P3=2³=8;
P0=D0⊕D1⊕D3⊕D4⊕D6=1⊕0⊕1⊕0⊕1=1
P1=D0⊕D2⊕D3⊕D5⊕D6=1⊕0⊕1⊕1⊕1=0
P2=D1⊕D2⊕D3⊕D7=0⊕0⊕1⊕0=1
P3=D4⊕D5⊕D6⊕D7=0⊕1⊕1⊕0=0

则海明码为011001001101
--------------------- 
博文链接 原文:https://blog.csdn.net/jihezhixin/article/details/86579085 

你可能感兴趣的:(海明码的计算步骤)