パリティビット(パリティビット)とは | 意味や読み方など丁寧でわかりやすい用語解説
パリティビット(パリティビット)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
パリティビット (パリティビット)
英語表記
parity bit (パリティビット)
用語解説
パリティビットは、デジタルデータが正しく転送されたり、記憶媒体に保存されたりしたかどうかを確認するために、データ本体に追加される特別なビットである。その主要な目的は、データの信頼性を向上させるために、転送中や保存中に発生する可能性のあるビットの反転といった誤りを検出することにある。コンピュータが扱う全ての情報は0と1のビット列で構成されているが、電気信号のノイズ、電磁波の干渉、記憶媒体の劣化など、さまざまな物理的要因によって、これらのビットが意図せず反転してしまうことがある(例えば0が1に、または1が0に変わってしまう)。このようなデータエラーが発生した際に、それを早期に発見するための最も基本的な手法の一つとして、パリティビットが利用される。データに付加されたパリティビットは、データを受信する側や読み出す側で再計算され、本来のパリティと比較されることで、データの整合性がチェックされる。もし計算されたパリティが元のパリティと一致しない場合、データに何らかの破損が発生したと判断される。しかし、パリティビットの機能はあくまで誤りの検出に限定され、誤りを自動的に修正する能力は持たない。また、複数のビットが同時に反転するような複雑な誤りに対しては、検出が困難であるという限界も存在する。
パリティビットの動作原理は、特定のデータブロック(通常は固定のビット数)に含まれる「1」のビット数を数え、その合計が偶数になるか奇数になるかを基準に、パリティビットの値を0または1に設定する。この基準には主に「偶数パリティ」と「奇数パリティ」の二つの方式がある。
偶数パリティ方式では、データビットとパリティビットを合わせた全てのビット列の中で、「1」のビット数が常に偶数になるようにパリティビットが設定される。例えば、8ビットのデータ「10110010」を送信する場合、このデータに含まれる「1」の数は4つであり、既に偶数である。このとき、パリティビットは「0」に設定され、送信されるデータは「101100100」(データ8ビット+パリティ1ビット)となる。もし、データが「10110011」で「1」の数が5つ(奇数)であった場合、全体の「1」の数を偶数にするためにパリティビットは「1」に設定され、「101100111」として送信される。
一方、奇数パリティ方式では、データビットとパリティビットを合わせた全体の「1」の数が常に奇数になるようにパリティビットが設定される。上記の例で、データ「10110010」(1の数4つ、偶数)の場合、全体の「1」の数を奇数にするためにパリティビットは「1」に設定され、「101100101」として送信される。データが「10110011」(1の数5つ、奇数)の場合、既に奇数であるためパリティビットは「0」に設定され、「101100110」として送信される。どちらのパリティ方式を採用するかは、通信を行うシステムやプロトコルによって事前に合意されている。
データが送信される側(または記憶媒体に書き込まれる側)では、まずデータ本体が準備され、次に採用されているパリティ方式に従ってパリティビットが計算され、データに追加される。このパリティビットが付加されたデータブロック全体が、通信回線を通じて受信側へ送られるか、あるいはハードディスクドライブや半導体メモリなどの記憶媒体に記録される。
データを受信する側(または記憶媒体から読み出す側)では、受け取ったデータブロックからパリティビットを除いたデータ本体の「1」の数を再度数える。そして、この数と受信したパリティビットの値を合わせて、全体の「1」の数が期待されるパリティ方式(偶数または奇数)と一致するかどうかを確認する。
例えば、偶数パリティを採用するシステムで、データ「10110010」とパリティビット「0」からなる「101100100」を受信したとする。受信側で全体の「1」の数を数えると4つであり、これは偶数であるため、期待される偶数パリティと一致する。したがって、データは正しく受信されたと判断される。しかし、何らかの理由でデータ中の1ビットが反転し、「101100000」(本来のデータは「101100100」)として受信された場合を考える。受信側で「1」の数を数えると3つであり、これは奇数となる。この結果は期待される偶数パリティとは一致しないため、受信側はデータに誤りが発生したことを確実に検出できる。
このようにパリティビットは、単一のビット反転による誤り(シングルビットエラー)を非常にシンプルかつ効率的に検出する。しかし、その限界として、複数のビットが同時に反転するような誤り、特に偶数個のビットが反転する誤りに対しては検出ができない場合がある。例えば、偶数パリティのシステムで2ビットが同時に反転し、結果的に全体の「1」の数が偶然にも再び偶数になってしまった場合、システムは誤りが発生したことを検出できず、誤ったデータを正しいと判断してしまう可能性がある。さらに重要な点として、パリティビットはあくまで誤りの「検出」のみを行い、誤りが発生した箇所を特定したり、自動的に誤りを「訂正」したりする能力は持たない。誤りが検出された場合、多くの場合、送信元にデータの再送を要求したり、そのデータを破棄して処理を中止したりするなどの対処が必要となる。
今日のコンピュータシステムでは、より高い信頼性が求められるため、パリティビットよりも複雑で強力な誤り検出訂正(ECC: Error Correcting Code)技術が広く利用されている。代表的なものには、巡回冗長検査(CRC: Cyclic Redundancy Check)やハミングコードなどがある。これらの技術は、単一ビットエラーだけでなく複数のビットエラーを検出できるだけでなく、一部の誤りであれば自動的に訂正する能力も持っている。しかし、パリティビットはそれらの高度な技術の基本的な概念の出発点であり、そのシンプルさと実装の容易さ、低コストから、特にコンピュータのメインメモリの信頼性向上など、特定の用途においては依然として重要な役割を果たしている。