海明校验例题

 

海明校验例题

 

首先海明校验码的校验位个数是有公式算的,一般对照表如图,考试肯定考5位的,其他的不用看,一样的原理。选择填空4,5位随便,怎么快怎么来,大题建议用5位的。

 

例1:请计算8位二进制信息10011010的海明码字是多少?

分析:8位,在5~11之间,想都不用想5位校验码,至于最后一位校验码P5为什么在13号上,原本应该是在16位上的,但是8位前面插完4位校验码之后才12位,根本用不了16位,暂且把16位的校验码提前搁到13号上就节省了长度。

 

首先应该草稿纸上画个表,吧这几个行列写清楚,横坐标、纵坐标。

海明校验例题

 

然后看第一个数D1(H3)是0,由于3可以拆成1+2,所以H1、H2对应的框里面填0,然后变成下面这样

海明校验例题

 

再看第二个数D2(H5)是1,由于5可以拆成1+4,所以H1、H4对应的框里面填1,然后变成下面这样。

海明校验例题

 

类似操作下去。。。直到都填完变成如下样子:

海明校验例题

 

然后求对应位置的校验位值

例如P1,直接看这一行01个数进行奇偶校验,说白了就是数奇数个1还是偶数个1,若奇数个1那么P1就是1,否则P1就是0,例如这里3个1所以P1为1

海明校验例题

 

P2跟P1一样,对第二行进行奇偶校验,得出P2=1

海明校验例题

 

类似操作。。。求出P3、P4

海明校验例题

 

P5的求法有点点不同,它为H1、H2、。。。、H12一起进行求奇偶校验所得结果

例如这里前面无论是数据位D1、D2。。。还是校验位P1、P2。。。都已经求出来了,其实就看抬头行跟抬头列一起进行数1是奇数个还是偶数个

第一行4个1,第一列3个一,所以P5(H13)=1

海明校验例题

 

到此,所有校验码都求出来了,若是大题,可以这样把求得的海明码列出来

海明校验例题

 

 

画到这,如果还有其他地方要分析海明码字是否存在错误位的时候,你可以根据以上画图步骤列出下面这个公式以便使用。这个加号表示进行奇偶校验。

很明显可以看到就是对应每行 对应值 加个 校验码 进行计算

海明校验例题

 

也可以是这个形式

海明校验例题

 

反之如果给你一串海明码,问你有无错误,错在哪?

例如:

例2:请分析海明码字1100101111011是否正确?若有错,请纠错。   

这里就需要用到上面列出来的这个公式了。

首先也是画个表,把对应抬头行跟抬头列给写进去。

海明校验例题

 

然后对应上面公式把S1对应这行 参与计算 的 位置 值 从抬头行copy下来,变成下图。

海明校验例题

同样的操作下去把S2、S3、S4对应行的值copy进去变成如下:

海明校验例题

 

然后S5对应这行就是把第一行值全部copy下来,变成下图:

海明校验例题

 

然后S1。。。S5也是同上面一样的操作,对每行进行奇偶校验,求出S1到S5的值。如下:

海明校验例题

 

然后定理:S5为0有偶数个错(S4S3S2S1=0无错;不为0有两位错),当某个数据位出错时、S4S3S2S1的值等于该出错位数据在海明码中的位号

例1:00000,S5为0,偶数个错,S4S3S2S1=0000,说明校验码无错。

例2:00110,S5为0,偶数个错,S4S3S2S1!=0000,说明校验码错了两位,抱歉找不出哪两位。

例3:10110,S5为1,奇数个错,S4S3S2S1=0110,后面四位表示的错位置0110=6,所以H6错了,该位取反即可纠错。

但是一般2位出错的概率几乎为0,所以大可放心。

 

例如上题S5S4S3S2S1=10110,则H6有错,正确的海明码字为:1100101011011