ZH
我的工具

汉明码计算器(编码、解码、纠错)

用汉明码对数据位编码:(7,4)、(15,11) 或任意长度,偶校验或奇校验,可选 SECDED;也可解码接收到的码字,给出校正子、出错位和纠正结果。

操作
码字
0110011
汉明码(7,4),偶校验
校验位数
3
码率
57.14%
数据位 ÷ 总位数

位置从左边按 1 开始编号;校验位位于 1、2、4、8 … 位置,校验位 P 负责检查所有编号中该二进制位为 1 的位置。

校验检查
校验位位置检查的位置这些位置上的位检查
P111, 3, 5, 70101通过
P222, 3, 6, 71111通过
P444, 5, 6, 70011通过
位的位置
位置二进制作用位
1001P10
2010P21
3011D11
4100P40
5101D20
6110D31
7111D41
我的工具 →
广告

汉明码在一块数据上增加几个校验位,使任何一个翻转的位都能被找到并纠正。它是纠错码的教科书式例子,至今仍用于 ECC 内存(SECDED 变体)。这个计算器可以把数据位编码成码字,也可以检查接收到的码字:计算校正子,指出哪一位出错,纠正它并提取数据,还用表格显示每个校验位负责检查哪些位置。

使用方法

  1. 选择编码或检查。
  2. 输入数据位(编码)或接收到的码字(检查)。
  3. 选择码型(或让工具适应长度),以及偶校验或奇校验。
  4. 如果需要检测双位错误,请加上用于 SECDED 的整体校验位。

计算公式

位置 2ᵗ 处的校验位 = 所有第 t 位为 1 的位置的 XOR · 校正子 = 所有为 1 的位的位置的 XOR = 出错位置

有 r 个校验位时,码字有 n = 2ʳ − 1 个位置,承载 n − r 个数据位——(7,4)、(15,11)、(31,26);其他长度则取满足 2ʳ ≥ k + r + 1 的最小 r。位置从左边按 1 开始编号,数据位依次填入不是 2 的幂的位置。使用奇校验时每项检查都取反。SECDED 增加一个整体校验位:校正子非零且整体校验不通过,是可纠正的单位错误;校正子非零而整体校验通过,则说明有两位错误。

示例

用汉明码(7,4)对 1011 编码:数据放在位置 3、5、6、7;P1 = 1⊕0⊕1 = 0,P2 = 1⊕1⊕1 = 1,P4 = 0⊕1⊕1 = 0,得到 0110011。如果第 5 位翻转(0110111),为 1 的位在位置 2、3、5、6、7,2⊕3⊕5⊕6⊕7 = 5,于是纠正第 5 位,恢复出数据 1011。

常见问题

汉明码能纠正两位错误吗?

不能。基本码只能纠正一位错误;出现两位错误时,校正子会指向错误的位置。扩展(SECDED)码多加一位,至少能检测出两位错误。

为什么校验位在 1、2、4、8 位置?

这些位置的二进制只有一个 1,所以每个校验位负责检查位置编号的一个不同二进制位。把未通过的检查加起来,就能以二进制拼出出错位置。

用偶校验还是奇校验?

两者工作方式相同,奇校验只是把每项检查取反。教材通常使用偶校验。

资料来源

最后更新:

引用此工具
APA

kakaoCalc. (2026, November 8). 汉明码计算器(编码、解码、纠错). https://kakao.mobile/zh/tools/hamming-code-calculator/

MLA

“汉明码计算器(编码、解码、纠错).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/hamming-code-calculator/.

广告