计算汉明码

时间:2011-03-22 12:28:59

标签: parity hamming-code

我对计算汉明代码感到有点困惑。在Wikipedia article中写道:

  

奇偶校验位1覆盖所有位位置   它具有最低有效位   set:bit 1(奇偶校验位本身),3,   5,7,9等

如何才能获得包含该值的位奇偶校验?

我理解是正确的,根据上面的文章,第一个奇偶校验位应该计算为:

parity_bit_1 = parity_bit_1 xor data_1 xor data_2 xor data_4 xor data_5 xor data_7 ...

然而在其他一些来源(例如joel.neely对this question的回答)中据说这样计算:

parity_bit_1 = data_1 xor data_3 xor data_5 xor data_7 xor data_9 ...

那么,应该怎么做呢?

2 个答案:

答案 0 :(得分:2)

这意味着:对于每个k,以下事物为零:索引具有位k的所有位的异或。 (您的位具有索引1,2,...,2 ^ n-1。)

实际数据位于索引设置多于一位的位中。

然后,您可以使用奇偶校验约束计算2-of-index索引位的所需值:每个约束包括索引为2的幂的正好一位,并且索引为2的幂的每个位出现只有一个约束。

因此,例如,考虑n = 3的情况。你有2 ^ 3-1 = 7位代码;其中3个是奇偶校验位,索引为1,2,4。其他的索引为3,5,6,7,是您感兴趣的数据。

您可以选择位1,2,4中的内容,以确保bit1 XOR位3 XOR位5 XOR位7 = 0且位2 XOR位3 XOR位6 XOR位7 = 0且位4 XOR位5 XOR位6 XOR位7 = 0。 / p>

因此,例如,如果您的消息是0110,那么您将发送?,?,0,?,1,1,0。首先 ?有?+ 0 + 1 + 0 = 0因此必须是1.第二个?有?+ 0 + 1 + 0 = 0因此也必须是1.第三个?有?+ 1 + 1 + 0 = 0因此必须为0.所以你发送的是1100110。

答案 1 :(得分:2)

我认为Calculating the Hamming Code文章会有所帮助。