コンテンツ
ハミングコードは、データストリームにエラー訂正情報を挿入するために使用されます。コードは、エラーが検出されるだけでなく修正されるように設計されています。エラー訂正情報を追加すると、データ量が増加しますが、エラー率の高いメディアを介した通信の信頼性も向上します。
ハミングコーディングは実装が複雑になる可能性がありますが、ビットレベルの算術トリックを使用すると非常に迅速に実行できます。これにより、組み込みアプリケーションで使用される、便利で高速なエラー訂正システムを作成できます。
ステップ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つのビットが含まれています。これは偶数なので、最初のビットはゼロに設定されます:0 _ 1 _ 1 0 1 _ 0 0 1 0
ステップ3
残りのパリティビットを計算します。 2番目のビットから始めて、2ビットが読み取られ、次に2ビットがスキップされて、手順が最後まで繰り返されます。 4番目のビットは4ビットを読み取り、ビット4で始まる別の4ビットをスキップします。それらがすべて計算されるまで、同じパターンの後にすべてのパリティビットが続きます。
例:
ビット2:0 _ 1 _ 1 0 1 _ 0 0 1 0は、3つの1を含む_1、01、01をチェックするため、ビット2は1に設定されます。ビット4:_ 0 1 1 1 0 1 _ 0 0 1 0は2つの1を含む_101、0をチェックするため、ビット4はゼロに設定されます。ビット8:0 1 1 0 1 0 1 _ 0 0 1 0は、1つだけを含む_0010をチェックするため、ビット8は1に設定されます。
したがって、単語は011010110010としてコード化されます。
ステップ4
単語を確認します。ワードが破損している場合、パリティビットは期待されるものと一致しません。単語が破損していないことを確認するには、手順2と3を使用してパリティビットを計算します。ビットが同じでない場合は、それらの位置を記録します。
手順5
間違ったビットを訂正してください。不正なパリティビットが見つかった場合は、ビットの位置を追加するだけです。合計値は、不正なビットの位置です。この位置のビット値を変更します。
たとえば、不正なパリティビットが1と4の場合、5番目のビットの値を変更するとエラーが修正されます。