汉明码编码原理
汉明码也叫做海明码,它通过向原始数据中添加校验数据来进行查错和纠错。具体来说,
-
假设数据位有n位,则校验位为k,k满足 2^k >= n+k+1
-
汉明码的位数为n+k,且校验位位于2的幂次的位置
-
每个检验位都规定检验了对应位置,如:
H1 负责 1 3 5 7… 位数的校验
H2 负责 2 3 6 7… 位数的校验
H4 负责 4 5 6 7… 位数的校验 -
校验位的结果 = 对应检验数据位的异或
-
例:数据:0011 n=4,计算得k=3
则汉明码:H1 H2 0 H4 0 1 1
H1 = 0 ⊕ 0 ⊕1 = 1
H2 = 0 ⊕ 1 ⊕1 = 0
H4 = 0 ⊕ 1 ⊕ 1 = 0
所以最终传输的数据:100011
汉明码查错纠错原理
-
汉明码只能检测并纠正一位错误。它是对每个校验位负责的校验的位数进行异或操作,如果结果为0则无错。
-
假设刚才的数据出现差错变成了100001:
P1 = 1 ⊕ 3 ⊕ 5 ⊕ 7 = 0 无错 第1、3、5、7位无措
P2 = 2 ⊕ 3 ⊕ 6 ⊕ 7 = 1 有错 第6位出错,若第6位为0,则改为1,反之改为0
P4 = 4 ⊕ 5 ⊕ 6 ⊕ 7 = 1 有错 如果是检测位的错误,可不纠 -
首先对第一校验位H1负责校验的1 3 5 7位进行异或,得到结果是0,说明1 3 5 7位没有出错,第二个校验位H2负责校验的2 3 6 7位进行异或,得到结果是1,说明有错,第三个校验位负责校验的4 5 6 7位异或结果也为1,说明有一位出错了,排除了1 3 5 7后,就可以得出第6位出错了。此时会对第6位进行纠错,0改为1,,1改为0.如果得到的出错为是校验位,可以不进行纠错,因为校验位是人为添加的。
汉明码的应用
- RAID2磁盘阵列中使用汉明码对数据进行查错和纠错。具体见文章: RAID磁盘阵列
本文详细介绍了汉明码(海明码)的编码原理,包括如何添加校验数据以实现查错和纠错,并通过实例解释了其查错纠错机制。此外,还探讨了汉明码在RAID2磁盘阵列中的实际应用。
1万+

被折叠的 条评论
为什么被折叠?



