データは1と0の波形からなっている
はっきりした1と0のデータが流れているわけではない。
信号の波形でこの範囲の値は1、0と判断されている。
これが乱れることがある。
- 伝送距離が伸びる
- 横から別の電気的な干渉
この波形の乱れが起きることをデータの誤りと言う。
データの誤りを防ぐ方法がある。
- パリティチェック
- CRC(巡回冗長検査)
しかし100%確実に防ぐ手段はありません
。
パリティチェック
ビット列にパリティビット
と呼ばれる。
検査用のビットを付加させることでデータの誤りを検出する。
検査ようのビットを付加させる方法が2つある。
偶数パリティ
ビット列の中の1の数が偶数になるようにする。
基数パリティ
ビット列の中の1の数が基数になるようにする。
例
Aの文字コードを偶数パリティで付加しておくるとする。
そうすると1が奇数になってデータの誤りが検出される仕組みだ。
パリティチェックの注意点
- 1ビットの誤りを検出するだけ
- 偶数個ビット誤りは検出できない。
- どのビットが誤りかもわからない。
水平垂直パリティチェック
データの誤りが1ビットの場合のみ誤りを特定できる。
特定方法は
データ列を縦に並べる。
データ列の1ビットごとに偶数の場合は偶数に合わせて1か0を付加させる。
これを水平パリティ
データ列の最後(下)に偶数の場合は偶数にして1か0を付加させる。
これを垂直パリティ
これを組み合わせて使うのが水平垂直パリティ
と言う。
注意点
2ビット以上の誤りは誤りは検出できるが、誤り位置の特定はできない。
CRC(巡回冗長検査)
特徴
-
データ誤り訂正は行えない
。 -
連続したビットの誤り(バースト誤り)を検出
する -
複数ビットの誤りを検出
する
検出方法
ビット列を特定の式(生成多項式と呼ばれる)で割る
。
その割り算の結果で余りが出る。
その余を元のビット列にその余をくっつける
。
そのくっつけられたビット列で生成多項式を割り切ることができる
。
こうすることで誤りを検出
する。
気づき
ビット列の割り算を基にしているのか。
でもなんで割り算にしているのか?
なんか数学の話になりそうだから先にいく。
出典 キタミ式イラストIT塾 基本情報技術者 令和03年