Paarsuskontroll

**Paarsuskontroll** on lihtsaim viis veakontrolliks andmevahetuses. Paketile lisatakse paarsusbitt nii, et  väärtusega 1 bittide arv selles paketis pärast paarsusbiti lisamist oleks olenevalt kokkuleppest kas alati paaris või alati paaritu. 

Esimesel juhul räägitakse **paaris paarsuskontrollist**, teisel juhul **paaritust paarsuskontrollist**. Kui paarsuskontroll on paaris, siis paarsusbitt saab väärtuse 1 siis ja ainult siis, kui ühtede arv selles paketis ilma paarsusbitita on paaritu, et muuta paketi ühtede arv paarisarvuks. Paaritu paarsuskontrolli korral saab paarsusbitt väärtuseks 1 siis ja ainult siis, kui ühtede arv selles paketis ilma paarsusbitita on paarisarv, muutes sellega kogu paketi ühtede arvu paarituks. Paarsusbitt peab tagama paarsuskontrolliga nõutud paarsuse.

## Paarsus
Matemaatikas tähendab paarsus sellele, kas konkreetne täisarv on paaris või paaritu. Kahendsüsteemi korral määrab selle viimane bitt. Telekommunikatsioonis ja arvutustehnikas viitab paarsus teatud bittide hulgal väärtusega 1 bittide arvu paarsusele. Selle saab leida bittide XOR summa abil, kus tulemus 0 viitab paarisarvule ja 1 paaritule arvule.

## Veakontroll
Kui bittide ülekandel tekib viga, muutub paarsusbitt valeks ja näitab, et ülekande käigus tekkis viga. Paarsusbitt ainult teavitab, et tekkis viga; see ei anna mitte mingit teavet selle kohta, millise bitiga viga tekkis. Kõik ülekandega saabunud bitid tuleb kõrvale jätta ja kogu ülekannet korrata. 

Saatja ja vastuvõtja peavad enne sideseansi algust kokku leppima selles, et paarsuskontrolli kasutatakse, samuti selles, kas kasutada paaris või paaritut kontrolli.

Oletagem, et saadame 4-bitist väärtust 1001 ja paarsusbitt lisandub lõppu. XOR-lülitid tähistagem märgiga ^.

Ülekanne paaris paarsuskontrolliga:
 A tahab saata:           1001
 A arvutab paarsusbiti:   1^0^0^1 = 0
 A lisab paarsusbiti:     10010
 B võtab vastu:           10010
 B arvutab paarsuse:      1^0^0^1^0 = 0
 B teatab õnnestunud ülekandest, kuna paarsuskontroll osutus õigeks.

Ülekanne paaritu paarsuskontrolliga:
 A tahab saata:           1001
 A arvutab paarsusbiti:   ~(1^0^0^1) = 1   
 A lisab paarsusbiti:     10011
 B võtab vastu:           10011
 B arvutab paarsuse:      1^0^0^1^1 = 1
 B teatab õnnestunud ülekandest, kuna paarsuskontroll osutus õigeks.

See mehhanism lubab tuvastada ühebitiseid vigu, kuna ühe biti väärtuse muutumisel muutub paarsuskontroll valeks.

Järgmises näites on viga teises bitis.

Ülekanne paaris paarsuskontrolliga:
 A tahab saata:           1001
 A arvutab paarsusbiti:   1^0^0^1 = 0
 A lisab paarsusbiti:     10010
 *** VIGA ÜLEKANDES ***
 B võtab vastu:           1**1**010
 B arvutab paarsuse:      1^1^0^1^0 = 1
 B teatab ebaõnnestunud ülekandest, kuna paarsuskontroll osutus valeks.

Järgmisena sama näide, kus paarsusbitt muutub vigaseks.

 A tahab saata:           1001
 A arvutab paarsusbiti:   1^0^0^1 = 0
 A lisab paarsusbiti:     10010
 *** VIGA ÜLEKANDES ***
 B võtab vastu:           1001**1**
 B arvutab paarsuse:      1^0^0^1^1 = 1
 B teatab ebaõnnestunud ülekandest, kuna paarsuskontroll osutus valeks.

Paarsuskontroll suudab tuvastada ainult paaritut arvu vigu. Kui vigu on paarisarv, siis paarsusbitt vastab ühtede arvule ja viga ei tuvastata, kuigi andmed on rikutud. Vaadelgem näidet paaris arvu vigaste bittidega.

 A tahab saata:           1001
 A arvutab paarsusbiti:   1^0^0^1 = 0
 A lisab paarsusbiti:     10010
 *** VIGA ÜLEKANDES ***
 B võtab vastu:           1**1**01**1**
 B arvutab paarsuse:      1^1^0^1^1 = 0
 B teatab õnnestunud ülekandest, kuigi bitid on vigased, kuna paarsuskontroll osutus õigeks.