梦的衣裳歌曲:海明码(解释的比较清楚)

来源:百度文库 编辑:中财网 时间:2024/05/09 15:32:34
海明码可以在编码中只有一位出错的情况下识别哪位出错(这意味着可以通过取反修正)。
假定有n位信息需要实现纠错。我们需要r位海明码,r需要满足2^r > n + r这个关系式。

下面通过对4位信息进行海明码编码分析来说明怎么样实现海明码。
2^3=8> 3 + 4  => r 可以为 3
我们用b7b6b5b4b3b2b1来表示编码后的7位。
接着分析:
注意到:
如果
把b3 b5 b7异或的结果取反后放到b1中
把b3 b6 b7异或的结果取反后放到b2中
把b5 b6 b7异或的结果取反后放到b4中
那么如果最多只出现一位出错的话,
计算b1 b3 b5 b7 异或,如果结果r1为1,说明b1 b3 b5 b7中有一位出错
计算b2 b3 b6 b7 异或,如果结果r2为0,说明b2 b3 b6 b7中没有错误
计算b4 b5 b6 b7 异或,如果结果r3为1,说明b4 b5 b6 b7中有一位出错
只有b5出错才有这种可能。同时注意:r3r2r1=101=5,这样可以快速找出错误的位。
为什么b1 b3 b5 b7放到一起计算,b2 b3 b6 b7放在一起计算.....呢?
呵呵,这是因为
1 = 001
3 = 011
5 = 101
7 = 111
都是xx1
2 3 6 7都是x1x
4 5 6 7都是1xx
而为了快速计算出海明码,r3 r2 r1都应该取只出现一次的位,上面的只有b1 b2 b4。
于是,海明码方案为b7 b6 b5 r3 b4 r2 r1。
下面看一下海明码的威力
我们有120位信息,2^7=128>120+7;这意味着,120位的信息产生的一位纠错码,只需要增加7位。
注意到raid阵列中如果有127个硬盘的话,通过海明码增加可靠性的话,只要使用7个硬盘来冗余。
如果每个硬盘的出错率为10^-12次方的话,这个方案的磁盘阵列不能修复的概率约为10^-20次方。