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 のべき乗であるビットが 1 つだけ含まれ、インデックスが 2 のべき乗である各ビットが正確に 1 つ表示されます。制約。

たとえば、n=3 の場合を考えてみましょう。2^3-1 = 7 ビットのコードがあります。そのうちの 3 つはパリティ ビットで、インデックスは 1、2、4 です。インデックスが 3、5、6、7 の他のデータは、関心のあるデータです。

bit1 XOR bit3 XOR bit5 XOR bit7 = 0 および bit2 XOR bit3 XOR bit6 XOR bit7 = 0 および bit4 XOR bit5 XOR bit6 XOR bit7 = 0 となるように、ビット 1、2、4 に入れるものを選択します。

たとえば、メッセージが 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 に答える