汉明码的分组特点
第一组:XXXX1
第二组:XXX1X
第三组:XX1XX
第四组:X1XXX
第五组:1XXXX
校验位就放在上面每一组中1的位置
就比如:
一组的校验位是00001
二组的是00010
对于任意给出一个数可以根据分组特点判断他在哪个组里
比如00111就在一二三组的交集里
汉明码的纠错
比如给出数据0101
它的汉明码就为0100101(加粗的为校验位)
现将其传送后,检测是否出错
检查出错的方法与设置校验位的方法相同(可以说是给汉明码每一组生成新的校验位)
生成一串二进制数的校验位,只需要将其每一位异或(采用偶校验,1的个数为偶数个)
我们就将每一组的二进制数给异或,如果结果为零就是没有错误
假设接受到 0100111
后经每一组异或得到新的校验位Pi(i为原校验位所在位置)
P4 = 1
P2 = 1
P1= 0
发现P4,P2不为零,所以出错了,只有第六位出错才会导致P4和P2不为零
所以将第六位纠正即可完成纠错