基本情報技術者合格のための勉強法まとめブログ

情報系の学生にとってはもはや必需品  ”基本情報技術者” しかし、実務経験のない学生では午後試験の突破は難しいです。 そんなあなたの悩みを打ち消すヒントが詰まったブログです。

基本情報技術者の勉強 データの誤りチェック

 

今回はデータの誤りチェックについて紹介していきます。

 

コンピュータの中ではデータを 0 と 1 の集合で取り扱っています。

 

一つのコンピューター内のみで取り扱うのであればあまり問題はないように思うかもしれませんが、

 

別のコンピューターにデータを送信するにはどうしたらよいでしょうか?

 

例えば、ケーブルを用いてデータを送るとします。

 

ケーブルの中は 0 と 1 を表す電気信号が流れていますが、当然きれいな波形を描いているわけではありません。

 

また伝送する距離が長くなればなるほど、電気信号は弱まってしまい、元のデータを維持するのが難しくなってしまいます。

 

このようなデータの誤りを防ぐためにデータの誤り制御というものがあります。

 

 

 

パリティチェック

f:id:qualifi:20190129235952j:plain

 

パリティチェックという誤り制御では、送信するデータにパリティビットというビットを付加します。

 

このパリティビットというのは検査用で、このビットを確認することでデータの誤りの有無を確認します。

 

パリティチェックにはパリティビットの付け加え方により二種類あります。

 

もとのデータのビット列にパリティビットを加えた新しいビット列の 1 の数を偶数にするか奇数にするかという決まり事を作ります。

 

偶数にする場合を偶数パリティと言います。

 

f:id:qualifi:20190129221149j:plain

 

これは偶数パリティの例です。

 

偶数パリティとあらかじめ決めておけば、このビット列は 1 の数が合計で 2 つ、偶数なのでデータの誤りはないということになります。

 

逆に、偶数パリティと決められているのに、1 の数が奇数であればそれはデータに誤りがあります

 

f:id:qualifi:20190129235526j:plain

 

これを奇数版にしたのが奇数パリティです。

 

送られてきたビット列の 1 が奇数個であればデータの誤りはありませんが、偶数個であれば誤りがあります。

 

ただ、この方式では一か所の誤りしか検出できませんし、どのビットが誤りなのかもうわかりません。

 

先ほどの例でみてみましょう。

 

f:id:qualifi:20190129235526j:plain

 

この場合、 0 の箇所が本来は 1 なのかもしれませんし、逆に 1 の箇所が 0 なのかもしれません。

 

またこの場合はどうでしょうか。

これは一見なんの問題のないデータのように見えますが、

 

f:id:qualifi:20190129221149j:plain

 

例えばビット列の誤りが二か所にあったとします。

 

そうすると、つじつまがあってしまい誤っているデータなのに正常なデータと判断してしまいます。

 

パリティチェックにはこのような問題がありますが、この問題に対処しようと拡張されたのが水平垂直パリティチェックです。

 

水平垂直パリティチェック

 水平垂直パリティチェックでは送られてきたデータのビット列を一つのブロックとしてみます。

 

そのブロックのどの方向にパリティビットを付加するかによって水平パリティか垂直パリティかが決まります。

 

f:id:qualifi:20190129235306j:plain

 

この方式では、ビット列の 1 の数が奇数であればパリティビットに 1 を、偶数であればパリティビットに 0 を付け加えます。

 

こうすることで、一か所の誤り特定と二か所の誤りの検出までが行えます。

 

f:id:qualifi:20190129235333j:plain

 

ただし、二か所の場合はどのビットに誤りがあるのかを特定することはできません。

 

CRC(巡回冗長検査)

 

この方式ではビット列をある特定の式で割り、その計算結果の余りをデータ誤り検出用のビットとして使用します。

 

f:id:qualifi:20190129235720j:plain

 

この時の特定の式のことを生成多項式と言ったりします。

 

実際に送信するのは誤り検出ビットを付加したビット列です。

 

f:id:qualifi:20190129235700j:plain

 

受信者はあまりを算出するのに使用した生成多項式を用いて受信されたデータを割ります。

 

ビットの誤りがなければ受信者の計算結果の余りは 0 のはずですから、これでデータの誤り検出ができます。

 

過去問

通信回線の伝送誤りに対処するパリティチェック方式(垂直パリテイ)の記述として,適切なものはどれか。
  • 1ビットの誤りを検出できる。
  • 1ビットの誤りを訂正でき,2ビットの誤りを検出できる。
  • 奇数パリティならば1ビットの誤りを検出できるが,偶数パリティでは1ビットの誤りも検出できない。
  • 奇数パリティならば奇数個のビット誤りを,偶数パリティならば偶数個のビット誤りを検出できる。

 

平成25年春期問4 パリティチェック方式の記述|基本情報技術者試験.com

 この問題の正解は選択肢の一番です。

 

パリティチェックでは 1 ビットの誤り検出しかできません。