海明校验码

海明校验码(Hamming Code)

是由贝尔实验室的Richard Hamming设计的,是一种利用奇偶性来检错和纠错的检验方法。海明码的构成方法是在数据位之间的特定位置上插入k个校验位,通过扩大码距来实现检错和纠错。

实现原理:是在m个数据位之外加上k个校验位,从而形成一个m+k位的新的码字,使新的码字的码距比较均匀地拉大。把数据的每一个二进制位分配在几个不同的偶校验位的组合中,当某一位出错后,就会引起相关的几个校验位的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为进一步自动纠错提供了依据。

设数据位是n位,校验位是k位,则n和k必须满足以下关系:

2^{k}-1\geqslant n+k

根据上诉不等式,可计算出

n值

最小k值
12
2~43
5~114
12~265
27~576
58~1207

例如:原始信息——101101100    9位

则    2^{k}-1\geqslant 9+k

推出   k=4

因为海明校验码是放在2的次幂位上的,所有插在位置1,2,4,8中

位置12345678910111213
原始信息位  1 011 01100
位置用到的校验码海明码下标
1校验位 
2校验位 
31,21+2=3
4校验位 
51,41+4=5
62,42+4=6
71,2,41+2+4=7
8校验码 
91,81+8=9
102,82+8=10
111,2,81+2+8=11
124,84+8=12
131,4,81+4+8=13

用到的校验码是看 当前位置由哪几个 校验码所在的位置的和

  • 例如

校验码的位置是1,2,4,8。位置3= 1 + 2,所以位置3用到的校验码是1和2;位置7 = 1 + 2 + 4组成的,所以位置7用到的校验码是1,2和4。

然后将校验码校验的位置记录下来:

  • 校验码1(位置1):3,5,7,9,11,13
  • 校验码2(位置2):3,6,7,10,11
  • 校验码3(位置4):5,6,7,12,13
  • 校验码4(位置8):9,10,11,12,13
12345678910111213
0001001000110100010101100111100010011010101111001101

注意:后面的数字串是位置的下标,不是值,值还是0或1。

然后做异或运算(相同时为0,不同时为1)

  • 校验码1(位置1):1⊕0⊕1⊕0⊕1⊕0 = 1
  • 校验码2(位置2):1⊕1⊕1⊕1⊕1 = 1
  • 校验码3(位置4):0⊕1⊕1⊕0⊕0 = 0
  • 校验码4(位置8):0⊕1⊕1⊕0⊕0 = 0
位置12345678910111213
原始信息位1110011001100

 

真是研究了好久,才知道是啥,果然是难者不会会者不难。

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值