「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

水平パリティチェック

pointこの用語のポイント

pointデータが おかしくなってないか確認する やり方だよ

pointビット列を区切って複数の固まりに分けたものに対して、ビット位置(1ビット目とか2ビット目とか)ごとにパリティビットをくっつけるよ

point「水平」の部分は気にしない方が良いと思うよ

スポンサーリンク

簡単に書くよ

水平パリティチェック(読:スイヘイパリティチェック 英:horizontal parity check)とは

送り手側では送るデータ(「0」と「1」の集まり)の「1」の個数が偶数か奇数かの目印(「0」か「1」)を付けて送ってやり、受け手側ではデータ内の「1」の個数と偶数・奇数の目印が一致するか確認することでデータがおかしくなってないかチェックするやり方(パリティチェック)の種類?分類?やり方?のひとつ
であり

例えば「100011110101」というデータ(ビット列)を「1000」「1111」「0101」の3つに分けて、それぞれの1ビット目「1」「1」「0」に対する「偶数・奇数の目印(パリティビット)」を用意して、それぞれの2ビット目「0」「1」「1」に対するパリティビットを用意して、それぞれの3ビット目「0」「1」「0」に対するパリティビットを用意して、それぞれの4ビット目「0」「1」「1」に対するパリティビットを用意する、のような やり方
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として

パリティチェックパリティ
パリティビット
ビット
ビット列


についてガッツリ説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

大前提として、コンピュータさんは「0(ゼロ)」と「1(イチ)」しか分かりません。
「0(ゼロ)」と「1(イチ)」の組み合わせで、文字を表現したり、音楽を表現したり、動画を表現したり、コンピュータの世界のあれやこれやを扱っています。

水平パリティチェック

例えば、ピヨ太パソコンからピヨ子パソコンにメールを送ったとしましょう。

水平パリティチェック2

このメールも、コンピュータさんにとっては「0(ゼロ)」と「1(イチ)」の集まりです。
人間様の見えないところでは「0100101010011100001011111001110……」みたいな形で扱われているのです。

水平パリティチェック3

まずは

どんなデータもコンピュータさんにとっては「0」と「1」の集まり

というのを押さえておいてください。

パリティチェック

1.送り手側でデータの中にある「1」の個数を数える
2.「1」の個数が偶数か奇数かの目印を付ける
 例)偶数だったら「0」奇数だったら「1」を付ける

3.目印を付けたデータを相手に送る

4.受け手側でデータの中にある「1」の個数を数える
5.目印の示す偶数・奇数と実際の「1」の個数の偶数・奇数が一致するか判定する


ことで、データがおかしくなっていないかチェックするやり方です。
単に「パリティ」と表現されることも あります。

水平パリティチェック4

例えば、そうですね。

まず前提として、偶数・奇数を表す目印は

「1」の個数が偶数→「0」
「1」の個数が奇数→「1」


を付けることにしましょう。

その上で、ピヨ太パソコンからピヨ子パソコンに

101

というデータを送ることにしました。

水平パリティチェック5

送ろうとしたデータの中に「1」は2個あります。
「偶数」個あるわけです。

水平パリティチェック6

そこでデータの最後に「1」の個数が偶数であることを表す目印「0」を付けました。
目印を付けた後のデータは

1010

です。

水平パリティチェック7

この状態のデータをピヨ子パソコンに送ります。

水平パリティチェック8

データを受け取ったピヨ子パソコン側では、データの中にある「1」の個数を数えます。
今回は2個ありました。
ということは「偶数」です。

水平パリティチェック9

次に、目印を見ます。
目印は「偶数」を意味する「0」でした。

水平パリティチェック10

ふむ。
実際の「1」の個数は偶数でした。
目印は偶数を意味しています。
一致しますね。

水平パリティチェック11

このことから、なんとなーくではありますが「多分、おかしくなってないんじゃない?」と判断できます。

水平パリティチェック12

せっかくなので、もう一例、見てみましょう。

今度はピヨ太パソコンからピヨ子パソコンに

100

というデータを送ることにしました。

水平パリティチェック13

送ろうとしたデータの中に「1」は1個しかありません。
「奇数」個です。

水平パリティチェック14

そこでデータの最後に「1」の個数が奇数であることを表す目印「1」を付けました。
目印を付けた後のデータは

1001

です。

水平パリティチェック15

この状態のデータをピヨ子パソコンに送ります。

水平パリティチェック16

おっと、途中でアクマ君がデータを蹴っ飛ばしてしまいました。
その結果「1001」は「1101」になってしまいました。

水平パリティチェック17

データを受け取ったピヨ子パソコン側では、データの中にある「1」の個数を数えました。
その結果「1」は2個でした。
ということは「偶数」です。

水平パリティチェック18

次に、目印を見ます。
目印は「奇数」を意味する「1」でした。

水平パリティチェック19

あれ?
一致しませんね。

水平パリティチェック20

この時点で「どこがおかしいかは分からないけど、何かがおかしいっぽい」ということが分かります。

水平パリティチェック21

まぁ、おかしいものは仕方がありません。
もう一度、正しいデータを送ってもらいましょう。

水平パリティチェック22

この例のように

1.送り手側で「データの中にある『1』の個数が偶数か奇数かを表す目印」を付けて送ってやる
2.受け手側で、データの中にある「1」の個数と目印を見比べる


ことでデータがおかしくなってないかチェックするやり方がパリティチェック(パリティ)です。

パリティビットは、パリティチェックの話で出てくる「『1』の個数が偶数か奇数かを表す目印」です。

水平パリティチェック23

ビットは、コンピュータさんの世界における「0か1が入る箱」です。

水平パリティチェック24

あるいは、この「0か1が入る箱」の数を表す単位です。
例えば「4ビット」であれば「0か1が入る箱が4つあるよ」の意味になります。

水平パリティチェック25

「パリティ」チェックで使う「ビット」だから「パリティビット」です。

ビット列は「ビットが何個か並んだもの」です。
0か1が入る箱(ビット)が、くっついて何個か置いてあるイメージです。

水平パリティチェック26

例えば

0100

のようなものがビット列です。

あるいは

11010100

のようなものですね。

以上を踏まえて

1つの長いビット列を複数のビット列(ブロック)に区切って、ビット位置(1ビット目とか2ビット目とか)ごとにパリティビットを用意するやり方

が「水平パリティチェック」です。
単に「水平パリティ」と表現されることも あります。

水平パリティチェック27

例えば、そうですね。

100011110101

というビット列が あったとしましょう。

水平パリティチェック28

これを4ビットごとに区切って

1ブロック目:1000
2ブロック目:1111
3ブロック目:0101


のように分けました。

水平パリティチェック29

あとは、ビット位置ごとにパリティビットをくっつければ完了です。
今回、パリティビットは

「1」の個数が偶数→「0」
「1」の個数が奇数→「1」


を付けることにします。

それぞれのブロックの1ビット目は

1ブロック目:1
2ブロック目:1
3ブロック目:0


です。
「1」「1」「0」は「1」の個数が偶数なので、パリティビットとして「0」を用意します。

水平パリティチェック30

それぞれのブロックの2ビット目は

1ブロック目:0
2ブロック目:1
3ブロック目:1


です。
「0」「1」「1」は「1」の個数が偶数なので、パリティビットとして「0」を用意します。

水平パリティチェック31

それぞれのブロックの3ビット目は

1ブロック目:0
2ブロック目:1
3ブロック目:0


です。
「0」「1」「0」は「1」の個数が奇数なので、パリティビットとして「1」を用意します。

水平パリティチェック32

それぞれのブロックの4ビット目は

1ブロック目:0
2ブロック目:1
3ブロック目:1


です。
「0」「1」「1」は「1」の個数が偶数なので、パリティビットとして「0」を用意します。

水平パリティチェック33

このようなやり方が水平パリティチェックです。

ビット列を分割して、ビット位置ごとにパリティビットを用意するやり方

です。

水平パリティチェック34

なお「水平」の部分は気にしなくて良いです。
むしろ、気にしないでください。
気にすると逆に混乱すると思います。

理由は、見方次第で「横(行、水平)」と「縦(列、垂直)」が入れ替わるからです。

水平パリティチェック35

先ほどの例で「100011110101」を

1ブロック目:1000
2ブロック目:1111
3ブロック目:0101


という3つのブロックに分けました。
これを表現するときに、それぞれのブロックごとにビットを横に並べて表現しました。
1行目が1ブロック目で、2行目が2ブロック目で、3行目が3ブロック目という形です。

水平パリティチェック36

水平パリティチェックの説明で「水平方向に~」とか言っているときは、それぞれのブロックごとにビットが縦に並べられているはずです。
1目が1ブロック目で、2目が2ブロック目で、3列目が3ブロック目という形で表現されているはずです。

水平パリティチェック37

よって「水平方向にパリティビットを付与する」のような覚え方をすると、状況次第では混乱します。

ビット列を区切って、ビット位置ごとにパリティビットを用意する

と覚えてあげてください。


image piyo2

一言でまとめるよ

まぁ「水平パリティチェック」って単語が出てきたら「データ(ビット列)を区切って、ビット位置(1ビット目とか2ビット目とか)ごとにパリティビット(データ内の「1」の個数が偶数か奇数かを表す目印)を用意するやり方なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像063
書籍画像051

おまけ

■訳してみるよ

「水平」は日本語ですね。
「parity(パリティ)」の意味は「等価」とか「同量」とか「同等」とか「同額」とか「一致」とか「偶奇性」とか「奇偶」とかです。
「check(チェック)」の意味は「調べる」とか「確かめる」とかです。
何となく くっつけると

水平の奇偶(検査で使うデータ)を調べる

となります。



■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
実践サイバーセキュリティ入門講座 現場に残された痕跡からハッカーの攻撃を暴け
エンジニアのための生成AI入門 はじめての生成AIアプリ開発からエージェント開発まで