海明校验码详解

海明校验码详解什么是海明码 提出者 RichardHammi 海明码是一种多重 复式 奇偶检错系统 用于检错和纠错 如何确定校验码其实计算海明校验码的值只需三步 对于原始数据信息位 m 计算得出需要的 k 位校验码如何确定最小的校验位数 kk 假设原有信息为 mm 位 则和校验位加起来长度有 m km k 校验位数 k 可以确定 2k2 k 个状态 这些状态中必有一个其所有奇偶测试都是真的 于是

  • 对于原始数据信息位m,计算得出需要的k位校验码
    • 如何确定最小的校验位数 k k k
      假设原有信息为 m m m位,则和校验位加起来长度有 m + k m+k m+k.校验位数k可以确定 $2^k $个状态,这些状态中必有一个其所有奇偶测试都是真的,于是剩下 2 k − 1 2^k-1 2k1 种状态。所以通过 2 k − 1 > = m + k 2^k-1>=m+k 2k1>=m+k 可以算出 k k k
      如原始信息为0110 1110 8位 2 k − 1 > = 8 + k 2^k-1>=8+k 2k1>=8+k导出 k = 4 k=4 k=4




  • 海明校验码是放在2的幂次位上的,如 1,2,4,8,16…等
  • 计算校验码

来一波例子,假设原始信息为

位置 8 7 6 5 4 3 2 1
原始信息位 0 1 1 0 1 1 1 0

第一步

 计算出K=4 

第二步

 确定校验码的位置在1 ,2 ,4,8位置上 

则新的信息位:

位置 12 11 10 9 8 7 6 5 4 3 2 1
新的信息位 0 1 1 0 H8 1 1 1 H4 0 H2 H1

第三步

计算校验位的值,也是最为关键的一步 
位置 二进制码
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
10 1010
11 1011
12 1100
海明码 出现的位置 对应位置上的值异或 结果
H1 3,5,7,9,11 0⊕1⊕1⊕0⊕1 1
H2 3,6,7,10,11 0⊕1⊕1⊕1⊕1 0
H4 5,6,7,12 1⊕1⊕1⊕0 1
H8 9,10,11,12 0⊕1⊕1⊕0 0

最终的信息位为

位置 12 11 10 9 8 7 6 5 4 3 2 1
最终信息位 0 1 1 0 0 1 1 1 1 0 0 1

校验码H8H4H2H1 = 0101

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198813.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午2:25
下一篇 2026年3月26日 下午2:25


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号