如何计算海明码
- 例如计算数据1011的海明码(根据偶校验,也就是取偶数个1)
- 先计算出最少需要几位校验位,计算公式
2^k >= k + 数据位数 + 1
- 1011的数据位为4,那么套入公式得出校验位最小为3
- 根据公式得出需要3个校验位,校验位的插入位置为2^0 ,2^1, 2^2
- _ _ 1 _ 0 1 1 在第1、2、4的位置插入校验码,这时数据位和校验位总和为7,所以从1到7的二进制分别为
1(0001),2(0010),3(0011),4(0100),5(0101),6(0110),7(0111)
- p0 校验位(检查位置 1、3、5、7 的奇偶性,为什么是1、3、5、7,因为它们的二进制从右向左的第1位都为1):
p0 = 1⊕0⊕1 = 0
- p1 校验位(检查位置 2、3、6、7 的奇偶性,为什么是2、3、6、7,因为它们的二进制从右向左的第2位都为1):
p1 = 1⊕1⊕1 = 1
- p2 校验位(检查位置 4、5、6、7 的奇偶性,为什么是4、5、6、7,因为它们的二进制从右向左的第3位都为1):
p1 = 0⊕1⊕1 = 0
所以1011的海明码为0110011
网友评论