2.1.5-3循環冗長性チェック(CRC)コード

 

おそらく春華に雪を懇願する

(҂◔∀◐҂)☆HappyHalloween♬☆◥(ฅº₩ºฅ)◤砂糖なしで騙したり治療したり☆(●⁰౪⁰●)お金がない(* {2} 3 ^)/〜☆

 

正午に、循環冗長性チェックコードと呼ばれる最後の種類のチェックコードを学習する必要があります。英語の省略形はCrCコードと呼ばれます。これにより、完全な英語名が付けられます。このセクションでは、最初にCrCコードの基本的な考え方を紹介し、次にその方法を紹介します。構造とその使用方法、つまりエラーをチェックして修正する方法。まず、このチェックコードの基本的な考え方を見てみましょう。おなじみの実際のシステムから始めましょう。他の人に渡したいとします。 882などの10進データを送信するには、データ送信中の特定のデータビットのエラーを防ぐために、他のパートナーと除算器について合意できます。たとえば、7は882÷7がちょうど除算後、計算した残りは0になるはずなので、ドラマの受信者がデータを受信すると、それを使用してデータを受信できます。さて、データ受信者がデータを受信したら、受信したデータと分割操作を実行することに同意した除算器を使用して、残りがゼロかどうかを確認できます。残りが0に等しくない場合は、正しいですか?データ送信中にエラーが発生したに違いないと判断できます。たとえば、相手が実際に883を受信した、つまり最後の番号でエラーが発生した後、883÷7であり、計算できる残りは1に等しいが0に等しくない。これは、エラーが発生し、再送信する必要があることを意味します。たとえば、2番目のデータビットにエラーがあり、8から5に変更された場合、7で割って得られる残りは5になります。同じ状況も考えられます。確かに、データ送信に問題があるはずです。これはおなじみの時間の分割です。除算器に同意し、データを受信して​​から消去操作を実行します。次に、データを受信した後、この除算器を使用して除算操作を実行し、残りが変更されているかどうかを確認します。これにより、データ送信エラーを検出できます。このセクションで学習する周期的冗長性チェックコードは、先ほど申し上げたのは、実際には分割の例です。実際には同様の考え方です。つまり、データの送信者と受信者が最初に除算器について合意します。もちろん、コンピュータでデータを処理しているため、この除算器はバイナリ除数、次にK個の元の情報ビットの後にRチェック桁を追加する方法を見つけます。Rチェック桁がスプライスされた後、このデータの文字列全体とちょうど合意した除数を確認する必要があります。除算演算では、残差は0に等しくなければなりません。受信機が受信したデータが蓄積された後、残差が負であるかどうかを確認するためにバイナリ除算が必要です。偽のデータの受信者がKとRVのデータを受信した後、バイナリ除算を使用して、残りが0に等しいかどうかを確認する必要があります。数値が0でない場合は、一部の2桁にエラーがあることを意味します。この場合、再送信するか、場合によってはシングルビットエラー修正を実行することもできます。これについては後で拡張します。要するに、これは周期的冗長性チェックコードとおなじみの10進ペナルティのアイデアです。実際には、いくつかの関連性があります。次に、周期的冗長性チェックコードの構築にはこれらの2つの重要な要素が必要であると述べました。 1つはマスターを撤回し、もう1つは配当です。一般的に、このように除算は問題の多項式を生成する方法で与えられるので、この生成する多項式を観察すると、1×X立方プラス1と書くことができます。2乗+ 0×Xの1乗+ 1×Xの0乗の場合、ジェネレータ多項式のこれらすべての項により、その係数は1または0のいずれかになるため、これを使用できます。ジェネレーター多項式は、対応する2進数に変換されます。次に、このGXのように、これらの係数にそれぞれ対応する1101に変換できます。したがって、ここに示すジェネレーター多項式は、実際に除数器がどれだけ優れているかを示します。 Kビット情報が出ています。この情報を上部に配置します。次に、チェック桁数Rを決定する必要があります。次に、決定方法は次のようになります。Rは次のようになります。これは、この式の最高の3次のように、ジェネレーター多項式の最高のパワーを与えるので、最終的にはシャミセンのチェック桁を平準化します。これは、それによって与えられるジェネレータ多項式の最大パワーに等しくなります。この式のように、最大​​パワーはXの3乗なので、最後に3つのチェック桁を接続します。ここで、チェック桁がなぜであるかについて心配する必要はありません。数は3です。情報に6桁あるため、後で見るとわかりやすくなります。次に、チェック桁が3桁であることを紹介したので、生成する最終的なCrCチェックコードは6 + 3 = 9になります。また、このジェネレーター多項式については前に述べましたが、これは合計4ビットの一連のバイナリコードに対応します。前述のアイデアを覚えている場合は、6ビットの情報に3つの修正を追加します。桁をチェックします。これらの3つのチェック桁を追加した後、チェックコードの残りの部分がゼロに等しいことを確認する必要があるため、確認する必要があります。除数は0に等しくなければならないので、次に決定する必要があるのは、残りが0であることを確認するために追加する3つのチェック桁を決定する必要があります。これが続行方法です。情報を2桁左にシフトします。左に3桁ずれています。これはコンピュータハードウェアの処理方法ですが、手動で行うと実はとても簡単です。6つの情報の後に2を足して、3つのゼロを足していきます。次に、この数と除数を使用して除算演算を実行すると、この除算演算によりRVの残りの3ビットが得られますが、ここで行う必要があるのは、通常の除算とは多少異なるモル除算演算です。はい、この特別な分割がどのように行われるかを見てみましょう。まず、除算器は4桁なので、配当の上位4桁を取得して彼と話し合います。ムーアはどのように分割しますか?まず、除数は4桁であるため、配当の上位4桁を取得し、最初に彼を傷つけます。ムーアのキャビネットでの商の取得方法は非常に特殊です。ビット、それが1の場合、1×100を1で表します。1 = 1001、下に記入し、最後の3桁で2桁の減算演算を実行します。実際、モル減算の効果はモルプラスと同じです。覚えていますか?Molarは実際には排他的OR演算であるため、実際には次の3桁でOR演算を実行しました。次に、0と11または11と01に等しい、または= 10と1億または1に等しいを参照して、最後の3桁が実行されます。 2次はないか、個別に実行した結果、または111を取得した結果は、10進ペナルティにいくらか似ています。それぞれ、または結果が111の場合、次のステップは10進除算に似ています。配当の最後の桁を、取得した残りの下位桁に追加します。これは、次のようになります。次の桁の最初の章を決定するために、それは前と同じです。最も高い桁だけを調べます。最も高い桁が1の場合、同じ1×1101をネゴシエートして1101を取得します。次に、次の3桁を実行する必要があります。モジュロ2減算操作、ボックスがモジュロ2になると、2つが排他的または01と01または= 10と11または= 1を実行するのと同等になります。したがって、上位ビットがゼロであるため、これは1ビットになります。森に行って、4つのゼロに等しくなるようにして、ここにいる必要があります。2減算またはXOR操作は3つの1を取得します。上位ビットが1であるため、1つの商の後に次の3つの商を取得し、1101を取得し、2を減算した後に0を加算して011を取得する必要があります。上位ビットが0であるため、アクターを傷つける必要があるので、次に0000を減らす必要があります。幸い、モジュロ2の削減を実行して110を取得しませんでした。しかし、最後に1ビット残っています。もう一度合計します。上位ビットが1なので、ネゴシエートする必要があります。次に、最後の3桁が1101の2番目のキーの結果は001です。Linglingは、コードと1101をモジュロ2で除算して得られる残りです。ルールを除いて、最終的な残りのガードはこれよりも少なくする必要があります。これらの操作で得られるのは私たちのものです。私たちのチェックディジット、つまり私たちが得る最後のCrCチェックディジットは最初の6つの情報ディジットと最後のチェックディジット001でなければなりません。これは肺テストと呼ばれる特定の方法です。この方法は確実なチェックです。コードをチェックし、1101でモジュロ2を実行し、分割の残りは000でなければなりません。これでチェックコードができたので、この情報の文字列全体を送信できます。一連の情報を送信および送信した後、受信者はデータを受信した後、エラーの検出と修正を実行する必要があります。送信者と受信者はこれについて事前に合意していることに注意してください。ジェネレータの多項式または除数が合意された後、受信者がデータを受信した後、受信したものを使用できます この情報の文字列と以前に合意された除数は2で除算されます。最後の残りが000の場合、Mortunaを試すエラーがないことを意味します。上位ビットが1であるため、商は1101です。 、次に、最後の3桁を2を法として減算し、111にする必要があります。ここで、0を追加します。次に、1101をネゴシエートします。最後の3桁は0151にする必要があります。次に、1を追加します。 0の後、4つのゼロは、2桁と次の3桁を法として差し引かれます。1101の最終結果は000になります。10分割を比較する場合は、入力する以外に余りがないことを意味します。この場合、エラーがないことを意味します。最後から2番目の場合は、別の状況を見てください。ビットにエラーがある場合は、1101で変調し、残りの2は010に等しくする必要があります。ムーアの保管と輸送に誰もが慣れるために、もう一度計算を行います。C2の2桁にエラーがある場合、最終的に得られる残りは010になります。誰もが一致を見つけます。得られる残りを10進数に変換すると、正確に2つのペアになります。そうです、エラーの位置もC2の位置ですが、実は残りとエラーの位置との間に必然的なつながりがないので、この場所に横線を引いています。この文は正しくも正しくもありません。なぜですか。言う?ここでは、元のデータ文字列と各位置を変更しました。エラーが最初の位置にある場合、ジェネレータの多項式は2を法とし、除算後に得られる残りは001です。エラー位置が最初の場合2桁、これは今の例です。エラー位置が3位の場合、ツリーはユニティゼロゼロです。ユニティゼロ30億を小数にすると、そうなるはずです。4に等しいですよね?したがって、残りの値とエラーの場所は実際には2進数から10進数ではありません。変換は非常に簡単ですが、実際に残りとエラーの場所の間には対応する関係があります。注意深い学生は、ここでの残りが3ビットしかないことに気付くでしょう。 3ビットの情報は2の3乗、つまり8状態のみを表すことができます。残りが3つのゼロに等しい場合、データ送信は正しいです。次のエラービットは1234567です。それぞれの状況は異なる残差に対応し、これらの7種類の残差に000を加えたものは、3ビットが表すことができる情報を持っているので、8番目のビットが間違っているかどうかを見てみましょう。残りは、再びゼロに等しくなります。ゼロワンが9番目の優れた談話である場合、ゼロワンゼロに等しくなります。これは、このスピーチの速度に相当します。再び001になり、9桁目に誤差がある場合、残りは010になります。つまり、残りは最初から繰り返されます。最初は001、2番目は010なので、前のPPTの残りは次のようになります。 010、2番目のビットが間違っていると判断できますか?9桁目が間違っていると、残りが010になる可能性があるため、この結論は明らかに受け入れられません。したがって、厳密で正しくないことを示すために、今文に水平線を引きました。その場合、循環冗長性チェックコードにはエラーを減らす機能しかなく、エラーを修正する機能がない、つまりエラーの場所を特定できないということですか?この種の理解は、合計9つあるため、この弟子のように正しくありません。私たちには3桁の情報しかありません。3桁の情報は完全にラベル付けできないことを意味するだけです。この種の理解は大丈夫ではありません。今の弟子の間では、合計9人なので、3桁の情報しかありません。これは、これらの9つを完全にマークできないことを意味します。エラーなので、循環冗長性チェックコードにエラー修正機能がないわけではありませんが、この例の情報は長すぎるので、別の例を見てみましょう。情報が4種類しかない場合、ジェネレータの多項式は以前と同じです。はい、1101です。最初に、情報ビットの後に3つの0を追加し、次にこの文字列全体を使用して1101をモジュロ2で除算し、残りの011を取得します。したがって、最終的にCrCを取得します。これらの4つの情報ビットがスプライシングされているはずです。 011の3つのチェック桁が適切です。次に、データ送信中に1つのビットにエラーがない場合、残りは明らかに0に等しくなり、最初のビットにエラーがある場合、残りは001になります。 2箇所に誤差があり、残りは010、3位は100、4位は5位です。ご自身で確認できます。注意深い生徒は、残りとソース位置の関係が前の例と同じではないことに気付くでしょう。残差とエラー位置の対応は、前の例とまったく変わりません。前の例では、残差は001、エラービットは1010、同じエラービットは2、100は同じエラービットは3です。も同じであるため、これは、ジェネレータ多項式を決定する限り、情報ビットがどのように変化しても、残りの値とエラー位置の間に固定の対応がなければならないことも意味します。 、そして、データの桁数が残りが表すことができる範囲を超えない場合、残りとエラービットの間に1対1の対応があります。この例では、残りが010に等しくない場合、エラービットを判別できます。 、2番目である必要があるため、2番目を修正するだけで済みます したがって、周期的冗長性チェックコードには実際にはエラー機能がありますが、情報は警備員です。したがって、周期的冗長性チェックコードには実際にはエラー機能がありますが、情報駐屯地にはできません。ここで与えられた不等式は、実際には前のセクションで明確にコード化された不等式と非常に似ています。最終的にRVを取得することを意味するため、Rがあります。残りの、および非常に多くの到達不能な数値は、2の二次を表すことができます。そのため、残りが0であり、00の状態が正しい状態に対応し、残りの2aが1で減算される、非常に多くの状態があります。非常に多くの状態がそれぞれKとRに対応する必要があります。エラーがなく、11の対応が必要な状況ごとに非常に多くの状態があるため、2回の二乗を満たすことができれば、K + 2 +1以上になります。 CrCを使用すると、単一のエラーを修正することができますが、実際のアプリケーションであるCrCでは、この方法は通常、コンピューターネットワークのデータ送信に使用され、通常は数千ビットの情報が追加されます。過去のデータ送信では、通常、数千ビットの情報ビットが数個の煙交差ビットに追加されるため、実際の使用では、この種のクロスサンプルコードは通常、エラー検出にのみ使用され、エラー修正には使用されません。ただし、実際にエラー修正が可能であることも知っておく必要があります。理論的には、このチェックコードはすべての基本エラーを検出すると同時に、すべてのダブルビットエラーを検出できます。さらに、以下のエラーも検出できます。チェックディジットの長さに等しい、つまりRV以下の連続エラー。これはこのトランザクションコードの検出機能です。このページの知識を誰もが簡単に理解しておくとよいでしょう。次に、この要約から学びます。循環冗長性チェックコード(CrCコードとも呼ばれます)。テストでは、通常、深い多項式確認情報が提供されます。残りの2桁のチェックコードを取得するには、これら2つの場所に合格する必要があります。そうしないと、情報は接続されません。最後の1つは夜盲と呼ばれます。試験では、通常、ジェネレータ多項式が与えられ、次に特定のK情報ビットが与えられます。RVのチェックコードであるRVの残りを取得するには、これら2つの初期条件に合格する必要があります。次に、Kの情報ビットと接続して、最終的なチェックコードを取得します。次に、2桁のチェックコードをK情報とスプライスして、最終的なチェックコードを取得します。受信者がデータを受信した後、ジェネレータ多項式を使用してモル分割操作を実行し、残りが残りが0の場合、エラーはありません。残りがゼロ以外の場合、エラーがあります。最後に、CrCコードのエラー検出および修正機能についても説明しました。教科書には、CrCコードにはエラー修正機能がないと書かれていますが、この理解は間違っています。情報ビット数とチェックビット数が十分に合理的で、特定の範囲制限を超えない限り、CrCコードを修正できます。取得した残りの部分とエラーの位置の間に1対1の対応があるため、シングルビットエラー。この対応の生成多項式を決定する限り、実際、Xiaojieの1つも犠牲であると確信するのは非常に簡単です。 Zuは物事をチェックするg-netでもあるので、誰もが注意を払う必要があります。もちろん、誰もが注意を払う必要があります。もちろん、自分で質問することも重要です。いわゆるほくろ分割の計算に精通している方は、この小学校の内容をすべてご紹介します。最後に、おもしろいことをご紹介します。この種のチェックコードが循環冗長性チェックコードと呼ばれるのはなぜですか?間違ったビットerが最初の位置にある場合、取得される残りは001です。さて、001の後にそれを彼に渡そうとします。 0を追加し、このジェネレーター多項式でムーアグラフ操作を実行します。ジェネレーター多項式は1101で、2で除算します。次に、商0は4つのゼロに等しく、最後の3桁は変調されます。2つの部分は010です。これがエラーであることがわかりましたか? 2位のニレの木に戻ってくるために、私は0を作らなかった。それはリンリンが1位だったからだ。次に、最後に0を追加します。最初の桁が0であるため、2- = 100を法として二重のゼロが必要であり、エラー位置は3です。この残りは同じです。さらに0を追加し続けると、1 =を傷つける必要があります。 1101または3M2- = 101はこれと同じです。今この方法でカウントダウンを続けると、得られる3桁の残りは常に001であり、110110まで続き、その後001に戻ることがわかります。繰り返しになりますが、この種のチェックコードがサイクリック冗長性チェックコードと呼ばれるのはその理由です。前述の例では、エラーが8の場合、残りは9桁目で001に戻り、010に戻ります。これは2番目の位置です。たとえば、10ビットのように、より多くの情報ビットがある場合、次のモルフェムはユニタリゼロでなければなりません。これらは非常に興味深いものですが、私たちの試験の焦点では​​ありません。ただ聞いて楽しんでください。6 Xiaojieのものは祖先の崇拝者でもあると確信しています、そしてそれはまたg-checkedのものなので、誰もが注意を払う必要があります。もちろん、誰もが注意を払う必要があります。もちろん、自分で質問することも重要です。いわゆるほくろ分割の計算に精通している方は、この小学校の内容をすべてご紹介します。最後に、おもしろいことをご紹介します。この種のチェックコードが循環冗長性チェックコードと呼ばれるのはなぜですか?間違ったビットerが最初の位置にある場合、取得される残りは001であると言いました。さて、001の後にそれを彼に渡そうとします。 0を追加し、ジェネレーター多項式でムーアグラフ操作を実行します。ジェネレーター多項式は1101で、2で除算します。次に、商0は4つのゼロに等しく、最後の3桁は変調されます。2つの部分は010です。これがエラーであることがわかりましたか? 2位のニレの木に戻ってくるために、私は0を作らなかった。それはリンリンが1位だったからだ。次に、最後に0を追加します。最初の桁が0なので、モジュロ2- = 100の場合はダブルゼロが必要で、エラー位置は3です。この残りは同じです。さらに0を追加し続けると、1 =を傷つける必要があります。 1101または3M2- = 101はこれと同じです。今この方法でカウントダウンを続けると、得られる3桁の残りは常に001であり、110110まで続き、その後001に戻ることがわかります。繰り返しになりますが、この種のチェックコードがサイクリック冗長性チェックコードと呼ばれるのはその理由です。前述の例では、エラーが8の場合、残りは9桁目で001に戻り、010に戻ります。これは2番目の位置です。たとえば、10ビットのように、より多くの情報ビットがある場合、次のモルフェムはユニタリゼロでなければなりません。これらは非常に興味深いものですが、私たちの試験の焦点では​​ありません。ただ聞いて楽しんでください。6 Xiaojieのものは祖先の崇拝者でもあると確信しています、そしてそれはまたg-checkedのものなので、誰もが注意を払う必要があります。もちろん、誰もが注意を払う必要があります。もちろん、自分で質問することも重要です。いわゆるほくろ分割の計算に精通している方は、この小学校の内容をすべてご紹介します。最後に、おもしろいことをご紹介します。この種のチェックコードが循環冗長性チェックコードと呼ばれるのはなぜですか?間違ったビットerが最初の位置にある場合、取得される残りは001であると言いました。さて、001の後にそれを彼に渡そうとします。 0を追加し、ジェネレーター多項式でムーアグラフ操作を実行します。ジェネレーター多項式は1101で、2で除算します。次に、商0は4つのゼロに等しく、最後の3桁は変調されます。2つの部分は010です。これがエラーであることがわかりましたか? 2位のニレの木に戻ってくるために、私は0を作らなかった。それはリンリンが1位だったからだ。次に、最後に0を追加します。最初の桁が0なので、モジュロ2- = 100の場合は二重のゼロが必要で、エラー位置は3です。この残りは同じです。さらに0を追加し続けると、1 =を傷つける必要があります。 1101または3M2- = 101はこれと同じです。今この方法でカウントダウンを続けると、得られる3桁の残りは常に001であり、110110まで続き、その後001に戻ることがわかります。繰り返しますが、この種のチェックコードがサイクリック冗長性チェックコードと呼ばれるのはその理由です。前述の例では、エラーが8の場合、残りは9桁目で001に戻り、010に戻ります。これは2番目の位置です。たとえば、10ビットのように、より多くの情報ビットがある場合、次のモルフェムはユニタリゼロでなければなりません。これらは非常に興味深いものですが、私たちの試験の焦点では​​ありません。ただ聞いて楽しんでください。6 間違いは、2位だったゆうしゅがまた来てしまうのに0を出さなかったので、林林が1位だった。次に、最後に0を追加します。最初の桁が0であるため、2- = 100を法として二重のゼロが必要であり、エラー位置は3です。この残りは同じです。さらに0を追加し続けると、1 =を傷つける必要があります。 1101または3M2- = 101はこれと同じです。今この方法でカウントダウンを続けると、得られる3桁の残りは常に001であり、110110まで続き、その後001に戻ることがわかります。繰り返しますが、この種のチェックコードがサイクリック冗長性チェックコードと呼ばれるのはその理由です。前述の例では、エラーが8の場合、残りは9桁目で001に戻り、010に戻ります。これが2番目の位置です。たとえば、10ビットのように、より多くの情報ビットがある場合、次のモルフェムはユニタリゼロでなければなりません。これらは非常に興味深いものですが、私たちの試験の焦点では​​ありません。ただ聞いて楽しんでください。6 間違いは、2位だったゆうしゅがまた来てしまうのに0を出さなかったので、林林が1位だった。次に、最後に0を追加します。最初の桁が0であるため、2- = 100を法として二重のゼロが必要であり、エラー位置は3です。この残りは同じです。さらに0を追加し続けると、1 =を傷つける必要があります。 1101または3M2- = 101はこれと同じです。今この方法でカウントダウンを続けると、得られる3桁の残りは常に001であり、110110まで続き、その後001に戻ることがわかります。繰り返しになりますが、この種のチェックコードがサイクリック冗長性チェックコードと呼ばれるのはその理由です。前述の例では、エラーが8の場合、残りは9桁目で001に戻り、010に戻ります。これは2番目の位置です。たとえば、10ビットのように、より多くの情報ビットがある場合、次のモルフェムはユニタリゼロでなければなりません。これらは非常に興味深いものですが、私たちの試験の焦点では​​ありません。ただ聞いて楽しんでください。6

 

おすすめ

転載: blog.csdn.net/m0_45359314/article/details/109400236