コンピュータ構成原理におけるハミングコード(詳しい説明)

目次

1. ハミング符号の原理

2. ハミング符号の構成

3. ハミングコードの例

1 つ目: 送信されたデータに基づいて、対応するハミング コードを計算します。

1. 偶数パリティを使用して、0011 のハミング コードを計算します。

ステップ 1: チェックデジットの数を計算する

ステップ 2: 7 つの情報フローに対応するバイナリ コードを書き込み、チェック デジットに対応する位置にマークを付けます。

ステップ 3: グループ化

ステップ 4: 送信された情報を左から右に書きます

ステップ 5: 偶数パリティを使用してチェック ディジットが何であるかを確認する

ステップ 6: 送信されたメッセージのハミング コードを取得する

2 番目のタイプ: 受信したハミング コードに基づく誤り訂正

2. 受信データは偶数パリティの 0100111 ですが、要求された情報量とエラーの有無を確認します。

ステップ 1: 情報フローの数を決定する

ステップ 2: 7 つの情報フローに対応するバイナリ コードを書き込み、受け取った情報を左から右に記入します。

ステップ 3: グループ化 (上記のグループ化方法と同じ)

ステップ 4: 偶数パリティを使用して、どのグループに問題があるかを確認し、対応するチェック デジットの番号を取得します。

ステップ 5: エラーが発生した場所を特定する

ステップ6: 送信されたデータを取得する


1. ハミング符号の原理

ハミング符号は1ビットの誤りを検出し、1ビットの誤りを訂正する符号であるため、最小符号距離は3です。パリティ符号を用いて検証や誤り訂正を行う符号化です。

2. ハミング符号の構成

ハミングコードとは、送信されるデータビットとチェックビットで構成されるコードです。

3. ハミングコードの例

1 つ目: 送信されたデータに基づいて、対応するハミング コードを計算します。

1. 偶数パリティを使用して、0011 のハミング コードを計算します。

ステップ 1: チェックデジットの数を計算する

k: チェックデジット n: データビット

まず、式eq?2%5E%7Bk%7D%3E%3Dn+k+1を使用して、送信データに含まれるチェック ディジットの数を計算します。チェック ディジットは、eq?2%5E%7Bi%7D の位置に配置されます。 、1、2、4、8...eq?2%5E%7Bi%7D

解答: 質問からわかるように、データ ビットは 4 つあり、式に入れるとチェック ディジットが 3 つあり、チェック ディジットの位置はそれぞれ 1、2、4 になります。つまり、情報の流れは 7 つあります

ステップ 2: 7 つの情報フローに対応するバイナリ コードを書き込み、チェック デジットに対応する位置にマークを付けます。

表が汚くなるので写真で代用させていただきます。

 

ステップ 3: グループ化

グループ化方法:xx1の方法に従ってグループ化し、右から左に数えて、最初の桁が1のグループが1グループ、2桁の1が2グループ目、というようにグループ化します。

したがって、1、3、5、7 を最初のグループに分割します

                  2、3、6、7 は 2 番目のグループに分けられます

                  4、5、6、7 は 3 番目のグループに分けられます

ステップ 4: 送信された情報を左から右に書きます

 

ステップ 5: 偶数パリティを使用してチェック ディジットが何であるかを確認する

第 1 グループ:第 1 グループは 1、3、5、7 であるため、テーブル上で数えられる 1 の数は 1 であり、1 の数は奇数であり、検証に偶数パリティが使用されるため、最初のグループはチェックデジットに書かれている数字は1です。

2 番目のグループ: 1 番目のグループが 2、3、6、7 であるため、テーブル上で数えられる 1 の数は 2 であり、1 の数は偶数であり、検証に偶数パリティが使用されるため、2 番目のグループはグループ チェックデジットに書かれている数字は0です。

3 番目のグループ:最初のグループが 4、5、6、7 であるため、テーブル上で数えられる 1 の数は 2 であり、1 の数は偶数であり、検証に偶数パリティが使用されるため、3 番目のグループはグループ チェックデジットに書かれている数字は0です。

したがって、0011のチェックデジットは100であると結論付けることができます。

ステップ 6: 送信されたメッセージのハミング コードを取得する

結果として得られたチェック ディジットをテーブルに入力して、送信された情報のハミング コードを取得します。

したがって、0011 に偶数パリティを使用して得られるハミング コードは 1000011 になります。

2 番目のタイプ: 受信したハミング コードに基づく誤り訂正

2. 受信データは偶数パリティの 0100111 ですが、要求された情報量とエラーの有無を確認します。

ステップ 1: 情報フローの数を決定する

情報フローは受信データ数に応じていくつか存在し、質問の意味から合計7つの情報フローが存在します。

ステップ 2: 7 つの情報フローに対応するバイナリ コードを書き込み、受け取った情報を左から右に記入します。

 

ステップ 3: グループ化 (上記のグループ化方法と同じ)

グループ化方法:xx1の方法に従ってグループ化し、右から左に数えて、最初の桁が1のグループが1グループ、2桁の1が2グループ目、というようにグループ化します。

したがって、1、3、5、7 を最初のグループに分割します

                  2、3、6、7 は 2 番目のグループに分けられます

                  4、5、6、7 は 3 番目のグループに分けられます

ステップ 4: 偶数パリティを使用して、どのグループに問題があるかを確認し、対応するチェック デジットの番号を取得します。

第 1 グループ:第 1 グループは 1、3、5、7 であるため、テーブル上で数えられる 1 の数は 2 であり、1 の数は偶数であり、検証に偶数パリティが使用されるため、最初のグループはチェックデジットに書かれている数字は0です。したがって、最初のグループについては問題ありません。

2 番目のグループ: 1 番目のグループが 2、3、6、7 であるため、テーブル上で数えられる 1 の数は 3 であり、1 の数は奇数であり、検証に偶数パリティが使用されるため、2 番目のグループはグループ チェックデジットに書かれている数字は1です。したがって、2番目のグループには問題があります。

 3 番目のグループ: 1 番目のグループが 4、5、6、7 であるため、テーブル上で数えられる 1 の数は 3 であり、1 の数は奇数であり、検証に偶数パリティが使用されるため、3 番目のグループはグループ チェックデジットに書かれている数字は1です。つまり、3番目のグループに問題があります。

したがって、結果のチェック ディジットのデータは 110 (チェック ディジット) になります。

ステップ 5: エラーが発生した場所を特定する

ハミング符号にはチェックデジットが10進数で表示されるという特性があり、ハミング符号の誤り位置はチェックデジットの10進数になります。

上記のチェックデジットは110なので、6ビット目でエラーが発生します。

ステップ6: 送信されたデータを取得する

チェックデジットを削除し、間違った位置を修正すると、送信データは 0101 になります。

おすすめ

転載: blog.csdn.net/yh1009/article/details/131893419