2017-01-26 10 views

答えて

2

CRCの古典的定義では、CRCを左シフトする非反映多項式を使用します。計算に使用されているワードサイズがCRCより大きい場合は、シフトされた上位ビットをクリアするためにオペレーションを最後に実行する必要があります(たとえば、16ビットCRCの場合は& 0xffff)。

あなたは全体を反転し、反射多項式を使用し、左の代わりに右にシフトすることができます。これは同じCRC特性を与えますが、メッセージからのビットは、最下位ビットから最下位ビットまで、効果的に最小から最上位まで動作します。あなたが右にシフトしているので、無関係なビットが下から忘却に落とされ、追加操作の必要はありません。これは、非常にわずかに高速でよりコンパクトな実装を使用する初期の動機の1つでした。

元のハードウェアの仕様では、ビットが最小から最大まで処理されることがあるため、反映されたバージョンを使用する必要があります。

いいえ、これは大小のエンディアンに適していません。どちらの種類のCRCも、リトルエンディアンアーキテクチャまたはビッグエンディアンアーキテクチャで簡単に計算できます。

関連する問題