ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
巡回冗長符号。誤り検出のための符号。
データを特定の定数で割り算し、その剰余を検査用の数値として用いる。単純なチェックサムで誤り検出を行なうよりも確実性があるため、厳密性を必要とする場面でよく使われる。
大きく、データの幅(ビット数)と多項式によって分類される。
用途に応じて、様々ある。一般的なものに、次のようなものがある。
このうち、17ビットの定数を用いて16ビットのCRCを求めるのがCRC-16、33ビットの定数を用いて32ビットのCRCを求めるCRC-32がよく使われる。
この定数は多項式と呼ばれ、多項式の違いにより、CRC-16やCRC-32には様々な種類が存在する。
多項式は様々な誤りに対し正常時と異なる値を算出できるものが求められる。
多項式は、規約性を持つ、すなわち素数である場合に、誤り検出能力が高い。そして、用いる多項式により誤り検出性能にも差が生じる。同じCRC-32でも、V.42やMPEG-2、zlib(zlibを用いるPNGなども含む)などで広く使われているCRC-32よりも、Intel SSE4.2のCRC32C命令で対応するCastagnoli CRCの方が検出性能が勝るとされている。
実際に様々な多項式が使われており統一はないが、次のような値が主に利用されている。
CやC++で計算しやすいように、CRC格納レジスターが32ビットと仮定し、このレジスター一つで全ての演算をする例を紹介する。それ以外の条件は上と同じ。
CRC格納レジスターの構成は、[8ビット桁溢れ分][16ビットCRC][8ビットのデータ]、となっている。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます