海明码知识透析–网工必备

                                         

 海明码的相关运算

   这段时间在备考网络工程师,51可帮了大忙,不仅各种知识点都有,还有海量针对性的模拟考题。这不做题的时候发现海明码经常出现在题目中,却次次做错。引起了我的警觉,这恐怕就是热考点和难点了。翻遍资料发现手头上的太少,于是在51上逛了逛发现了一个挺不错的帖子,姑且就用这哥们的方法来应对考试吧。不才,学了2个多小时才弄懂。现在就和大家分享下心得和怎么面对这海明码。

     要想会算 海明码、信息码或冗余码字那必须知道这个公式:

        n=m+k;m+k+1<=2^k

其中,n为海明码 m为信息码 k为海明码内的冗余码

好了,现在我们来举例子。考试海明码无非就是在这几个参数中进行来回的推导

现在为大家演示一下知道海明码求信息码的例子其他的计算举一反三。先声明一下

这也是刚学习到得一种方法,错了大家指出。对了您就收着。

    例题:接收码为100110001100,求:发送端的信息码

   分析:接收码中必然包含着海明码码,这有又两种情况

一:接收码无误,那么说明冗余码是正确的,我们可以检验一下

a3=1=第九位+第十位+第十一位+第十二位
    =1+0+0+1=0 1=0 ?所以有错误我们于是开展下面的算法

根据公式,我们可以推算出来冗余位从而知道信息码为几位。

13<=2^k  k=4 所以m=8

好,接着我们推导冗余码。

这里有一个简单的公式大家可以尝试运用。对于接收码为8位的,可以这样找,不过要排除掉1 2 4 8 16 这样的冗余位,因为我们算的就是它。

所以 7=2^2+2^1+2^0

           6=2^2+2^1

           5=+2^2+2^0

          ……………..

以此类推,就会得到一个包含若干相2^2 2^1 2^0这样的东西,求出a3 a2 a1 a0 得到

 

a2=1=第五位+第六位+第七位+第十二位
    = 0+0+0+1=1
a1=0=第三位+第六位+第七位+第十位+第十一位
    =1+0+0+0+0=1
a0=0=第三位+第五位+第七位+第九位+第十一位
    =1+0+0+1+0=0

我们在用校验公式:s3=a3+0 s2=a2+1 s1=a1+1 s0=a0+0,算出s3=1 s2=0 s1=0 s0=0

s3s2s1s0=1010不等于0 所以我们判断第十位出错。吧0改成1

那么接收码现在为101110001100

 

现在我们把冗余位去掉,就能得到我们想要的信息码了为

10110001。

其他的换算关系大家可以自己做揣摩下。想做题的话可以在51上找。

明天研究CRC,有需要的朋友可以过来共同学习。

 

 

 

   

 

转载于:https://blog.51cto.com/magic001/508440

Published by

风君子

独自遨游何稽首 揭天掀地慰生平