汉明码的理解

  1. 用于验证传输二进制0101010101数据的正确性,并可以纠正1位。
  2. 例如原信息码k为10101,添加海明码k验证
  3. 利用公式2^k - 1 >= n + k求出海明码的长度k = 4(因为2^4 - 1>= 5+4 && 2^3 - 1 < 5+ 3所以需要4位校验码)
  4. 确定总长度是9位,在新编码2^(k-1)k递增位置占坑补0,确定汉明码的位置。
  5. 其余坑位,按原来顺序填充信息位。
  6. 将9位,转换为二进制,倒数第一位等于1(1,3,5,7)的数据执行异或运算,并填充到效验码第1位。
  7. 转换为二进制,倒数第二位等于1(10,11,110,111)的数据执行异或运算,并填充到效验码第2位。
  8. 转换为二进制,倒数第三位等于1(100,101,110,111,1100)的数据执行异或运算,并填充到效验码第4位。
  9. 转换为二进制,倒数第四位等于1(1000,1001,1011,1010)的数据执行异或运算,并填充到效验码第8位。
  10. 以上得到完整的汉明码。
  11. 如何效验数据的正确性?
  12. 执行以上异或运算,全部为0,则数据传输正确。0101则第5位发生错误。
原文地址:https://www.cnblogs.com/gongjin/p/9443026.html