来自http://blog.csdn.net/dengyanhui88/article/details/6480117
海明码在网络差错控制中应用很广泛。这里给大家讲讲海明码的具体计算方法。
比如这里有信息码1100 要怎样求出它的海明码呢?
首先我们要确定需要多少个校验位。这里大家记住校验位都在2的冥次方上,也就是说
校验位在1,2,4,8,16位........等等。好了我们确定了海明码的校验位的位置下面就来具体计算一下1100的海明码编码。
我们把校验位加入信息码。
??1 ?1 0 0 (问号就是校验码,我们现在还不知道校验码的具体值);
如何计算出第一个校验码呢?
因为它处的位置是第一位,所以我们就校验一位,跳过一位。然后检查校验过的数,如果有
奇数个1则此校验位置1.如果有偶数个1此校验位置0;
我们开始校验,校验第一位是个?就是什么都没有,隔一位,然后又校验一位是1记录下来。
这样继续下去,我们发现有2个1也就是偶数个1。所以第一个校验位置0
我们就得到了0 ?1 ?100了。继续确定第二个问号。
因为它在第二位,所以要校验两位跳过两位,校验?1跳过?1又校验00.我们发现有1个1
所以此校验位置1;
下面确定第三个问号:
因为它在第四的位置上,所以我们校验四位,跳过四位,发现有1个1.所以此校验位置1
最后得到海明码0111100;
如果校验位在第八位,则校验八位,跳过八位,以此类推。