パリティビット計算機
情報の完全性を担保するバイナリ検証。誤り検出プロトコルの基本アルゴリズム。
パリティビットとは:最もシンプルなデータの番人
パリティビット(Parity Bit)は、デジタル通信やコンピュータのメモリにおいて、データ転送中に発生した「誤り(エラー)」を検出するための最も基本的で原始的な手法です。 バイナリデータ(0と1の集まり)に対し、1ビットの「番人」を付け加えることで、そのデータ群に含まれる「1」の個数が偶数か奇数かを一定に保ちます。
通信相手がデータを受け取った際、このパリティビットを再計算してルール(偶数か奇数か)から外れていれば、「転送中にどこかのビットが反転した」と判断し、再送要求などの処理を行うことができます。
偶数パリティと奇数パリティの違い
パリティには、大きく分けて2つのモードがあります。
- 偶数パリティ (Even Parity): データ本体とパリティビットを合わせた「1」の総数が、常に 偶数 になるようにパリティビットを決定します。例えば、データが「1011」なら「1」が3個なので、偶数にするためにパリティは「1」となります。
- 奇数パリティ (Odd Parity): 総数が常に 奇数 になるように調整します。データが「1011」ならすでに3個(奇数)なので、パリティは「0」になります。
どちらのモードを使うかは通信プロトコルによって事前に決められており、送信側と受信側で一致している必要があります。
COUNT_ONES(data) -> sum
EVEN_BIT = sum % 2
ODD_BIT = (sum + 1) % 2
パリティビットの限界:2ビットエラーの罠
パリティビットは非常に軽量で計算コストが低いのがメリットですが、重大な限界があります。 それは、 「1ビットの誤りは検出できるが、2ビットが同時に反転した誤りは検出できない」 という点です。 1ビットが反転すると偶奇(パリティ)が変わりますが、さらにもう1ビット反転すると、再び元の偶奇に戻ってしまうため、受信側はデータが壊れていることに気づけません。
そのため、高度な信頼性が必要な環境(サーバ用メモリや衛星通信)では、パリティではなく、誤りの位置まで特定して自動修正できる ECC(Error Correction Code) や、ハミング符号、チェックサムといったより複雑な技術が使われます。
実務での応用:RAID 5からシリアル通信まで
歴史のあるRS-232Cなどのシリアル通信では、現在でも「データ7ビット + パリティ1ビット」という設定がよく使われます。 また、ストレージ技術の RAID 5 では、複数のHDDにデータを分散して保存する際、それらのデータの「排他的論理和(XOR)」からパリティを生成し、別のドライブに保存します。これにより、どれか1台のドライブが壊れても、残りのデータとパリティから壊れたデータを数学的に復元することが可能になります。
まとめ:データの完全性を意識する第一歩
現代のインターネットは高度に抽象化されており、私たちが普段、ビットレベルの誤りを意識することは稀です。 しかし、その舞台裏では、パリティビットのような小さな仕組みが数千万回、数億回と繰り返され、情報の完全性を守り続けています。 情報の最小単位である「1」と「0」の均衡を確認するこのパリティチェックは、デジタル世界の信頼性を築くための、最初で最も重要な礎なのです。
※本ツールは、1ビットのパリティ算出を目的としています。バーストエラー対策や多重誤り訂正が必要な場合は、CRCやハミング符号の利用を検討してください。