ここから本文です

パリティについて教えてください

dun********さん

2013/6/2815:56:02

パリティについて教えてください

最近この分野の勉強を始めた初心者です。
パリティの設定方法が今一つわからなかったので、質問します。

例えば0011001において、7bit evenとするには
あたまにパリティビットの1を足して1001001にすればよい
7bit odd とするには 00011001にすればよい、という理解であっているでしょうか。

また、例えば10進数の数に7bit evenのパリティを設定して16進数にするには
いったん2進数に直してから設定し、それから16進数に直すのでしょうか。

回答お願いします。
よければですが、具体的な回答も示してくださるとうれしいです。

閲覧数:
1,553
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

azu********さん

2013/6/3010:15:55

「7bit evenとする」というのは、7bit コード(情報記号2進7桁)に 1 bit の冗長桁(パリティ検査記号2進1桁)を付け加えて
8桁全体の 1 の桁の数を偶数にするという意味で使われているのでしょうが、あいまいな表現ですね。
パリティビットの桁位置は原理的には、どこにしても構いません。普通、頭に付け加えたり、末尾に付け加えたりしますが、中間だって構わないのです。パリティビットを取り除いてもとのデータにちゃんと戻すことができるためには、どの位置にパリティビットを付け加えているかをはっきりさせておく必要があります。
「あたまに付け加えるとすれば」という条件つきで、
■例えば0011001において、7bit evenとするには
■あたまにパリティビットの1を足して1001001にすればよい
ということでよいでしょう。

■また、例えば10進数の数に7bit evenのパリティを設定して16進数にするには
■いったん2進数に直してから設定し、それから16進数に直すのでしょうか。

「10進数の数に7bit evenのパリティを設定して」という質問の意味がよく分かりません。
「10進数に使われる 0 ~ 9 の文字コード(例えば ASCII 7 ビットコード)にeverパリティを設定して」というのなら、通信でふつうにやられている方式です。
例えば 1 2 8 という文字コードは、ASCII 7ビットコードで表せば、 次のようになります。スペースは見やすさのために入れています。
0110001 0110010 0111000
頭に1ビットeven パリティビットを付け加えてやれば、次のようになり、これを1ビットずつシリーズに送信/受信するわけです。
10110001 10110010 00111000
ところが2進数は人間にとっては読みづらいし書きづらいので、読み書きに都合のよい16進数で表すことがよくやられます。上の2進数は16進数では
B1 B2 38
となります。慣れれば16進数⇔2進数の変換は瞬間にできます。「16進数表示は人間の便のため」なのです。
今の場合、31 32 38 というASCIIコードで表された 1 2 8 という10進数の文字(数字)が頭にevenパリティビットを付け加えて B1 B2 38 になったわけです。

上の説明は文字(数字)コードの場合でしたが、バイナリーデータ(2進数数値データ)に対してevenパリティを付けることもできます。
例えば、C言語の場合
int a=128;
と書けば、int型が32ビットで表される一般的なコンピュータでは、変数 a には 128 が2進数に変換されて
0000 0000 0000 0000 0000 0000 1000 0000
のように入ります。このようなバイナリデータを 7bit evenとして送信するとすれば、32ビットのデータを7ビットずつのかたまりに分ける必要があります。
ところが 32/7 は割り切れないので、まず頭に 0を 3 ビット付け加えて 35ビットにします。
000 0000 0000 0000 0000 0000 0000 1000 0000
これを7ビット単位で書き表せば次のようになります。スペースは見やすさのために入れているだけです。
0000000 0000000 0000000 0000001 0000000
これの頭に even パリティビットを付け加えれば
00000000 00000000 00000000 10000001 00000000
になります。16進数で表せば 00 00 00 81 00 というわけです。
受信側では、逆の手順で変換して 元のバイナリデータ
0000 0000 0000 0000 0000 0000 1000 0000
に戻すことになります。

つまり、数字と数値では扱いはまったく異なるわけです。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

k03********さん

2013/6/2818:50:22

duniv_itさん

正確?

例えば
0011001において、7bit evenとするにはあたまにパリティビットの1を足して
1001001にすればよい7bit odd とするには
00011001にすればよい、という理解であっているでしょうか。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる