ブロックに含まれる「1」の個数を数える
受け手側でビット・エラーを検出するためには,送られてきたデータが正しいかどうか判断するための情報が必要です。そこで誤り検出の技術では,データに誤り検出のための情報を加えて一緒に相手に送ります。この誤り検出のための情報を誤り検出符号と呼びます。誤り検出符号は送信するデータから計算して作ります。受け手側では受け取ったデータに対して同じ計算を行い,一緒に送られてきた誤り検出符号と結果が一致するかどうかを調べます。結果が同じなら,送られてきたデータに誤りが生じていないとわかるわけです。誤り検出の技術は,誤り検出符号を作る計算方法にミソがあります。
もっともシンプルな誤り検出符号はパリティ・チェック符号です。この方式ではブロックに含まれる「1」の個数を必ず偶数か奇数にするように調整して,誤りを検出します。偶数にそろえる方式で説明しましょう。
たとえば「0100010」というビット列をブロックとして送る場合はパリティ・ビットを0とします。こうすると送信するビット列は「01000100」となり,全体で見ると1の個数が二つなので偶数になります。このように最終的に送る「1」の個数を偶数にする方法を「偶数パリティ」と呼びます。「1」の個数を奇数にする方法もあり,こちらは奇数パリティと呼ばれます。
次に受け手側を見てみましょう。受信側ではブロックを受け取るたびに,ブロックに含まれる「1」の個数を数えます。偶数パリティを使っている場合は,ブロックに含まれている「1」の個数が偶数なら誤りがなかったと判断します。もし「1」の個数が奇数であれば,パリティ・ビットも含めたブロック内のどれかのビットに誤りがあるとわかるわけです。