パリティビット
出典: フリー百科事典『ウィキペディア(Wikipedia)』
パリティビット(parity bit)は、コンピュータと通信において、与えられた二進数に対して全体の奇偶性を保つために与えられる一桁の二進数(つまり 0 か 1)である。パリティ機構を使用するにあたっては、奇数(odd)か偶数(even)かを指定しなければならない。パリティ(奇偶性)がevenであるというのは、与えられた二進数の中に 1 が偶数個存在することを意味し、そうでなければoddである。
目次 |
[編集] 例
10111101 というビット列のパリティはevenである(1 が6個存在する)。パリティビットは 0.
01110011 というビット列のパリティは oddである(1 が5個存在する)。パリティビットは 1.
00000000 というビット列のパリティはevenである(1 がない場合はeven)。パリティビットは 0. nullまたは存在しないビット列のパリティも(1がないので)evenであり、パリティビットは 0 である。
通信する際にパリティビットを含めた奇偶性を取り決めておく。たとえば上記の例は evenパリティである。 ビット列を受け取る側が同時にパリティビットも受け取り、パリティが even であるかを確認する。 even でなかった場合はビット列かパリティビットのどこかにビットの値が書き換わっている可能性があることを示す。
[編集] 使用法
シリアルなデータ転送では、データビット7個につき even パリティビット1個(そして1~2個のストップビット=区切り)というのが一般的である。even パリティとは、値が 1 であるビットの個数が偶数であることを意味する。 このフォーマットは 7ビットのASCIIキャラクタを適切に扱い、扱いやすい8ビットにするという意味で便利である(訳注:日本人にとっては困ったことである)。 他のフォーマットも使用可能である。たとえば 8ビットデータにパリティビットを追加するという場合もある。 通信においては、パリティは送受信ハードウェア内で付与されチェックされる。 エラーがあったかどうかはその周辺ハードウェアのステータスをCPUが読んで判断する。 修復(訂正)は再度送信してもらうのが一般的である。詳細はCPU(オペレーティングシステム)が設定する。
[編集] 簡単なエラー訂正
パリティビットは非常に単純な冗長チェック(冗長な情報を追加することで内容をチェックすること)である。 1ビットのパリティは、奇数個のビットが変化したことは検出できるが、偶数個のビットが変化したことは検出できない。 しかもエラーを訂正するのに十分な情報ももたらさない。
非常に単純であるため、パリティはハードウェアの様々なところで使われている。ただしエラーが起きたら再送するか、あるいは単にエラーを検出するだけで足りる場合である。 たとえばSCSIバスはパリティを使用してエラーを検出している。 マイクロプロセッサの命令キャッシュもパリティビットを持っていることが多い。 命令キャッシュの内容は単なるメインメモリのコピーなので、エラーを検出したら再度メモリから持ってくればよいからである。
[編集] CRC 多項式がパリティの起源
even パリティは巡回冗長検査(CRC)の特殊ケースであり、1ビット CRCは x+1 という多項式から生成される。