海明校验码

海明校验码

设二进制数据01101101

求他的海明校验码

怎么计算海明码的位数呢?

     假设有原有数据有n位,校验码有x位,则校验码一共有2^x种取值方式。其中需要一种取值方式表示数据正确,剩下2^x-1的取值方式表示有一位数据出错。因为编码后的二进制数据串有n+x位,因此x应满足    2^x-1>=n+x

此例子中有n是8,计算出就是x=4  所以校验码有4位。总共应该是12位

确定校验码的位置

校验码的位置:在二进制串中的位置为2的整数幂。剩下的位置为数据.


校验

假设位置为1011的数据由0变成1,校验过程为:

将所有位置形如***1,**1*,*1**,1***的数据分别异或.

  ***1:0^0^1^0^1^1=1

 **1*:0^1^0^1^1=1

*1**:1^1^1^0^1=0

1***:1^1^1^1^1=1

以上四组中,如果一组异或值为1,说明该组中有数据出错了。***1,*1**,1***的异或都为1,说明出错位置为1101.

优秀!!!

你可能感兴趣的:(海明校验码)