2

我对计算汉明码有点困惑。在维基百科文章中写道:

奇偶校验位 1 涵盖了所有设置了最低有效位的位位置:位 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 对这个问题的回答)据说是这样计算的:

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

那么,应该怎么做呢?

4

2 回答 2

2

它的意思是:对于每个 k,下面的东西是零:所有其索引设置了位 k 的位的异或。(您的位有索引 1,2,...,2^n-1。)

实际数据进入其索引设置了多个位的位。

然后,您可以使用奇偶校验约束计算 2 次幂位的所需值:每个约束恰好包括一个其索引是 2 的幂的位,并且每个索引是 2 的幂的位恰好出现在一个约束。

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

您选择位 1、2、4 中的内容,以确保 bit1 XOR bit3 XOR bit5 XOR bit7 = 0 和 bit2 XOR bit3 XOR bit6 XOR bit7 = 0 和 bit4 XOR bit5 XOR bit6 XOR bit7 = 0。

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

于 2011-03-22T12:46:26.093 回答
2

我认为计算汉明码文章会有所帮助。

于 2011-07-09T20:50:00.047 回答