JonnyOu的博客

兴趣使然的程序猿

海明码(简单转化)

有效信息转换为海明码进行发送,转换过程如下:


例子:

有效信息:10011100

1.海明码不等式

设N为校检码的位数,K是有效信息位,r是校检位,则有海明不等式:

N = K+r < 2^r ;

2.校验位+有效信息位的表示

在海明码中,位号数(1,2,3,4....)为2的权值的那些位,即1(2的0次方),2(2的1次方),4(2的平方)位,作为奇偶校检位,记作:P1,P2,P3.....余下各位则为有效信息位

10011100有8个有效信息位,则海明码可表示为:

位号(a)123456789101112
P占位P1P21P3001P41100

3.确定校验位对应的二进制数值(即0,1)

海明码中的每一位分别被P1,P2,P3....Pr中的一至若干位所校验,规律为:

第i位由校验位位号之和等于i的那些校验位所校验

引入表格:

海明码位号占用的检验位位号备注
11

1 = 1

222 = 2
31,23 = 1+2
444 = 4
51,45 = 1+4
62,46 = 2+4
71,2,47 = 1+2+4
888 = 8
91,89 = 1+8
102,810 = 2+8
111,2,811 = 1+2+8
124,812 = 4+8

每个校验位所校检的位号

校验位位号被校检位位号
1(P1)1,3,5,7,9,11
2(P2)2,3,6,7,10,11
4(P3)4,5,6,7,12
8(P4)8,9,10,11,12

条件备齐,检验位数值由其对应的被校检位位号对应数值之和来确立

如P1 = a1+a3+a5+a7+a9 + a11 = 0+1+0+1+1+0+0 = 1(没有进位,1+1为0),

以此类推,P2 = 1,P3 = 1,P4 = 0

至此,10011100对应海明码彻底推出:111100101100


5.校验

来到最有意思的环节,改掉海明码中任意一位数值,都能从错误的海明码中把这一位找出来,一下为校验过程

改掉以上例子中的第3位,即改为110100101100,再次计算校验码Pn的值,

P1 = a1+a3+a5+a7+a9 + a11 = 1,P2 = 1, P3 = 0, P4 = 0;

此时检验码由大到小从左到右排列,即为0011,化成十进制是3,即检验出第3位被修改过了,此时只需修改第三位的数值,即0变1,1变0,即为正确的传输信息。

海明码的局限性在于只能检验并修改1位错误的信息。

 
阅读更多
个人分类: 计算机网络
上一篇NYOJ 257
下一篇MySql常用命令行(转载)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭