ハミングコードの計算方法

ステップ1

データワードを作成します。 2のべき乗(1番目、2番目、4番目など)の位置を持つビットは、パリティ情報用に予約する必要があります。 データソースとパリティビットに適応するために必要なワードの長さを使用します。

例:

1 1 0 1 0 0 1 0は_ _ 1 _ 1 0 1 _ 0 0 1 0になります

ビットは同じ順序のままですが、パリティビットに合わせて拡張されています。

ステップ2

最初にパリティビットを計算します。 最初のビットから始めて、ビットを読み取り、ビットをスキップして、見つかったものの数をカウントしながら操作を繰り返します。 パリティビットはゼロとしてカウントされます。

1の数が偶数の場合、最初のビットをゼロに設定します。 それ以外の場合は、1つとして配置します。

例:

__ 1 _ 1 0 1 _ 0 0 1 0、_11101のビット1、3、5、7、9、および11には4つの1が含まれています。 これは偶数なので、最初のビットはゼロに設定されます:0 _ 1 _ 1 0 1 _ 0 0 1 0

ステップ3

残りのパリティビットを計算します。 ビット2はビット2から2ビットを読み取り、2をスキップして繰り返します。 ビット4は4ビットを読み取り、4をスキップしてビット4から始まります。 計算するパリティビットがなくなるまで、このパターンを続けます。

例:

ビット2:0 _ 1 _ 1 0 1 _ 0 0 1 0チェック_1、01、01、3個の1を含むため、ビット2が1に設定されます。ビット4:0 1 1 _ 1 0 1 _ 0 0 1 0チェック_101、0、これには2つの1が含まれているため、ビット4は0に設定されます。ビット8:0 1 1 0 1 0 1 _ 0 0 1 0 check _0010、1つのみ、ビット8を設定1。

したがって、エンコードされた単語は011010110010です。

ステップ4

単語を確認してください。 ワードが破損している場合、パリティビットは予想と一致しません。 単語が破損していないことを確認するには、手順2と3でパリティビットを計算するだけです。 いずれかのビットが一致しない場合、それらの位置を登録します。

ステップ5

不良ビットを修正します。 誤ったパリティビットが見つかった場合は、ビット位置を追加するだけです。 合計は、間違ったビットの位置です。 その位置でビット値を移動します。

たとえば、パリティビット1と4が正しくない場合、5番目の5番目のビットの値を反転してエラーを修正します。

興味深い記事