- @ThothChildren
- 2018.6.23
- PV 97
簡単に送受前後でデータ誤り確認したい
ー 概要 ー
簡単な方法で送受信されたデータに誤りがあるかどうかを判定する技術についてまとめます.チェックサムやパリティチェックなどが挙げられます.
この章を学ぶ前に必要な知識
条件
- データビット列が入力
効果
- 絶対誤りがないかはわからないが、ある程度誤りを検出
ポイント
- データを処理して確認するためのビットを付与
解 説
簡単に送受信前後でデータに誤りが出てきていないかを確認する方法についてまとめます.
ここでは誤りを訂正することはできず、あくまで誤りがあることを検出するにとどまります.
主に紹介する方法は以下の方法です.
・パリティチェック
全ビットを足した偶奇を求めてその1bitのみ付与する.簡単な計算で求まるため扱いやすい.様々なハードウェアで使用されている.
・チェックサム
単純だがやるだけである程度の誤り検出が可能になる.全ビットを足し合わせて下位数bitを確認用に保持する.合計が同じ場合や意図的に改竄されて合計値がそろえられた場合などに対応できない
・CRC(巡回冗長検査)
他手法よりも検出率高い.ある他の短いbit列で入力データを割っていき(XORと右シフトでも可)最後の余りを確認用に保持する. | 簡単に送受前後でデータ誤り確認したい |
1.パリティチェック | |
パリティチェックは全てのビットの中で1が偶数個あるか奇数個あるかを表すパリティビットをデータに加える.単純ではあるものの十分に誤り確認をすることが可能.奇数個を1とするか偶数個を1とするかを決めておく.以下の例では奇数個を1としている.
例)
|1000101| ⇒ 1
|1010101| ⇒ 0 | パリティチェック |
2.チェックサム | |
チェックサムは全ビットをある数ビットごとに分割してそれぞれの数を足し合わせ、その下位数ビットを確認用のビットとしてデータに付与する.アルゴリズムが非常に単純で検出率もそこそこなため使用されることがある.
例)
07 04 11 02 ⇒ 24
FF 01 FF 01⇒ 00 (合計値は200) | チェックサム |
3.CRC(巡回冗長検査) | |
上に上げた二つの手法よりも検出率が高い誤り検出手法.
アルゴリズムは複雑ではなく、XORと右シフトのみで実現することができる.
与えられた入力を決まったデータ列で割っていくように上位bitとXORを取る操作をし1bit右シフトしていく.余りを求めそれを検出用のビット列とする手法.決まったデータ列のbit長がkだとすると余りはk-1bit以下となる.
例)
111111 を 1000で ⇒ 余りは111
101001 を 1011で ⇒ 余りは101 | CRC |
この章を学んで新たに学べる
Comments