Binary 这个汉明码10101011110有错误吗?

Binary 这个汉明码10101011110有错误吗?,binary,bit,hamming-code,Binary,Bit,Hamming Code,假设我们正在使用一个纠错码,它将允许所有的单位错误都被删除 修正了长度为7的记忆单词。我们已经计算出需要4个校验位, 所有码字的长度都是11。码字是根据汉明公式创建的 文中给出了算法。我们现在收到以下代码字: 1 0 1 0 1 0 1 1 1 1 0 假设均等,这是一个合法的密码吗?如果没有,根据我们的纠错码, 错误在哪里 p.s.这个汉明码问题需要一些帮助,这是一个书本问题。 提前感谢:) 码字是根据文本中介绍的汉明算法创建的 这是一条重要的信息,你不觉得吗?:-) 如果没有算法,我们无法确

假设我们正在使用一个纠错码,它将允许所有的单位错误都被删除 修正了长度为7的记忆单词。我们已经计算出需要4个校验位, 所有码字的长度都是11。码字是根据汉明公式创建的 文中给出了算法。我们现在收到以下代码字: 1 0 1 0 1 0 1 1 1 1 0 假设均等,这是一个合法的密码吗?如果没有,根据我们的纠错码, 错误在哪里

p.s.这个汉明码问题需要一些帮助,这是一个书本问题。 提前感谢:)

码字是根据文本中介绍的汉明算法创建的

这是一条重要的信息,你不觉得吗?:-)

如果没有算法,我们无法确定有效性,因此我将为您提供一个通用方法

每个校验位通常应用于某些位子集。假设这七位是
b6
b0
。计算四个校验位以在以下子集中提供偶数奇偶校验:

     1  0  1  0  1  0  1
ca  b6 b5    b3 b2 b1 b0  1+0+0+1+0+1   + (ca = 0)
cb  b6    b4    b2    b0  1+1+1+1       + (cb = 0)
cc  b6       b3       b0  1+0+1         + (cc = 0)
cd     b5          b1 b0  0+0+1         + (cd = 1)
现在,如果您没有得到与数据匹配的校验位序列,理想情况下,您将能够计算出需要更改哪个数据或校验位才能修复它。只有当您能够确保每个校验位计算都经过精心设计,以添加最大的额外信息时,这才有效

这可能是我上面的计算失败了,因为我只是凭空计算出来的。但是,因为我的目的只是在没有算法的情况下解释这个概念,所以这不重要


确保算法有效的一种方法是使用暴力:

  • 获取所有可能的11位值的列表。只有2048个这样的系统,所以并不繁重。现在,放弃那些已经正常的(我们只对无效的感兴趣)
  • 依次切换(11)中的每一位,看看该项是否有效
  • 如果没有位切换使其有效,则这不是一个位错误,因此可以安全地忽略
  • 如果one位切换使其有效,则您有足够的信息修复此情况
  • 如果多个位切换使其有效,则您没有足够的信息来修复此情况
总之,如果每一个一位错误的可能性都可以通过一个单位切换(上面最后一个项目符号的第二个)来实现,那么纠正代码就是完美的

您还应该进行检查,以确保在切换单个位时,每个有效位都将变为无效位,但我将把这作为一个练习,因为您现在应该有足够的关于如何执行此操作的信息