通信に関する基礎理論

基礎理論

通信に関する基礎理論

チェックディジット

チェックデジットとは、数字列の誤りを検知するために付加される検査用の数字のこと。また、そのような数字を用いた誤り検出方式。バーコードや銀行の口座番号などに利用されている。

最もよく用いられる方式は、各桁の値に一定の規則に従った係数を乗じた値の和を求め、それを定められた係数で割った余りを末尾に付加する方法である。元の番号の数字が少しでも違っているとチェックデジットが全く異なる値になるため、誤りを検出することができる。 

パリティビット

パリティチェック

パリティチェックは、データ通信やメモリチェックなどにおいてデータのビット誤りを検出する最もシンプルな方法の一つです。一定長のビット列(通常は7~8ビット)ごとに1ビットの検査ビット(パリティビット)を付加し、検査側が受信データとパリティビットを照合することで誤りを検出します

ビット列とパリティビットを合わせて「1」のビット数が奇数になるようにパリティビットを付加する方式を「奇数パリティ」、「1」のビット数が偶数になるようにパリティビットを付加する方式を「偶数パリティ」といいます。

 

16進数で表現されている文字コード30,3F,7Aを2進数に変換して「1」のビット数を確認すると

 

 30→0011 0000(2個)

 3F→0011 1111(6個)

 7A→0111 1010(5個)

 

この中で「1」のビット数が奇数である7Aの先頭ビットにだけパリティビットを付加して「1」の個数が偶数になるようにします。

 

 7A→0111 1010(5個)

→1111 1010(6個)→FA

 

つまり偶数パリティビットを付加した後のデータは「30,3F,FA」になります。

https://www.fe-siken.com/bunya.php?m=1&s=4&no=6

 

パリティチェックは、データ通信やメモリチェックなどにおいてデータのビット誤りを検出する最もシンプルな方法の一つです。一定長のビット列(通常は7~8ビット)ごとに1ビットの検査ビット(パリティビット)を付加し、検査側が受信データとパリティビットを照合することで誤りを検出します。

チェック方式としては、送信データそれぞれに対してパリティを付加する垂直パリティ1番目のデータの1ビット目,2番目のデータの1ビット目~n番目のデータの1ビット目というようにデータブロックの並びに対して付加されたパリティを水平パリティといいます。

パリティチェックは、誤り訂正の機能を持たないため、誤りが検出されたときにはデータの再送要求を行います。また、奇数個の誤りであれば検出できますが、偶数個の誤り(バースト誤り)は検出できないという特徴があります。

 

※2方向にパリティを付加する方式「水平垂直パリティチェック方式」では、1ビットまでの誤りを訂正することができます。

https://www.fe-siken.com/bunya.php?m=1&s=4&no=4

 

文字Tを表すビット列(1010100)は「1」のビットが3個あります。この設問で用いる偶数パリティでは「1」のビット数を偶数にしたいので付加するパリティビットは「1」になります。

 

送出は次の順番で行われます。

スタートビット(0)

文字T(1010100)

→低位ビット(右)から高位ビット(左)の順で送出するので受信する順番は「0010101」になる。

パリティビット(1)

ストップビット(1)

 

https://www.fe-siken.com/bunya.php?m=1&s=4&no=11

 

CRC方式

CRC方式(Cyclic Redundancy Check,巡回冗長検査)は、送信データから生成多項式によって誤り検出用のデータを付加して送信します。受信側では送信側と同じ生成多項式を用いて受信データを除算し、送信されてきた誤り検出用のデータと比較することで誤りの有無を判断することができます。

パリティビットでは検出できなかった「バースト誤りをより複雑な生成多項式による演算を行うことで検出できる」という長所があります。

https://www.fe-siken.com/bunya.php?m=1&s=4&no=1

 整数型とビット操作

4ビットの2進数が表す数値は 0 = 0000(2) から 15 = 1111(2) である.この数値を 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f で表すと, 4ビットを一文字で表すことができ, すなわち1バイト(=8ビット)を2文字で表すことができる. これが16進数表示である. 

現在のコンピュータは4バイトをひとまとまりとして扱うことが多い (例えば int 型は4バイト). 4バイトは 4*8 = 32 ビットであるから,これを2進数で表すと 32 桁にもなる. しかし16進数だと,4ビットを1文字で表すので8文字で表せることになる

例えば, 7777777 = 00000000011101101010110111110001(2) = 0076adf1(16) である.

Cのプログラム中で,整数の定数を16進数で表すことができる. その定数には16進数であることの印のために,頭に 0x を付けることになっている. ( x は16進数 hexadecimal number の x を意味する) 

整数型とビット操作

 排他的論理和の特徴

XOR演算には次のように演算対象の各ビットのなかの「1」の数が奇数個であれば結果は1、偶数個であれば結果が0になるという特徴があります。

奇数パリティは、データを構成するビット全体の中でビット「1」の数が奇数個になるようにパリティビットを付加する方式なので、パリティビットを含めた各ビットをすべてXOR演算した結果は必ず「1」となります。

https://www.fe-siken.com/bunya.php?m=1&s=4&no=7