Bit de paritate

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
7 biți de date Octet cu bit de paritate
Chiar și bit de paritate Biti de paritate ciudati
1101001 0 1101001 1 1101001
1111111 1 1111111 0 1111111

Bitul de paritate este un cod de control utilizat în computere pentru a preveni erorile în transmiterea sau stocarea datelor. Acest sistem prevede adăugarea unui bit redundant la date, calculat în funcție de faptul dacă numărul de biți care valorează 1 este par sau impar. Biții de paritate sunt unul dintre cele mai simple coduri de detectare și corectare a erorilor .

Există două variante ale bitului de paritate: bitul de paritate par și bitul de paritate impar . Când se utilizează un bit de paritate par, acest bit este setat egal cu 1 dacă numărul de „1” într-un anumit set de biți este impar (ceea ce face ca numărul total de „1”, inclusiv bitul de paritate, să fie par). Pe de altă parte, când se utilizează un bit de paritate impar, acest bit este setat egal cu 1 dacă numărul de „1” dintr-un anumit set de biți este par (făcând numărul total de „1”, inclusiv bitul de paritate, devenit ciudat). Bitul de paritate este un caz special de verificare a redundanței ciclice (CRC), atunci când CRC de 1 bit este generat de polinomul x +1.

Eroare detectata

Dacă un număr impar de biți (inclusiv bitul de paritate) este schimbat în timpul transmiterii unui set de biți, atunci bitul de paritate va fi incorect și va indica faptul că a apărut o eroare în timpul transmisiei. Prin urmare, bitul de paritate este un cod de verificare, dar nu este un cod de corectare a erorilor , deoarece nu există nicio modalitate de a determina care bit specific este greșit. Folosind un canal foarte zgomotos, poate dura mult timp pentru a obține o transmisie corectă sau poate să nu se întâmple niciodată. Pe de altă parte, metoda bitului de paritate are avantajul de a fi un cod care folosește doar un bit de spațiu și necesită doar un anumit număr de porți XOR pentru a fi generat. Consultați codul Hamming pentru un exemplu de cod de corectare a erorilor.

Bitul de paritate poate fi calculat după cum urmează, presupunând că transmite valoarea de 4 biți 1001, cu bitul de paritate poziționat în dreapta și denotând XOR cu ^:

Transmisie utilizând paritate uniformă:

 A vrea să transmită: 1001
A calculează bitul de paritate: 1 ^ 0 ^ 0 ^ 1 = 0
A adaugă bitul de paritate și trimite: 10010
B primește: 10010
B calculează paritatea totală: 1 ^ 0 ^ 0 ^ 1 ^ 0 = 0
B poate spune că transmisia a avut succes.

Transmisie utilizând paritate impară:

 A vrea să transmită: 1001
A calculează bitul de paritate: ~ (1 ^ 0 ^ 0 ^ 1) = 1
A adaugă bitul de paritate și trimite: 10011
B primește: 10011
B calculează paritatea totală: 1 ^ 0 ^ 0 ^ 1 ^ 1 = 1
B poate spune că transmisia a avut succes.

Acest mecanism permite detectarea unei singure erori, deoarece, dacă un bit este greșit din cauza zgomotului, va exista un număr greșit de unul în datele primite. În exemplele de mai sus, valoarea de paritate calculată de B se potrivește cu valoarea de biți de paritate așteptată. Luați în considerare următorul exemplu, în care apare o eroare pe al doilea bit:

Transmisie utilizând paritate uniformă:

 A vrea să transmită: 1001
A calculează bitul de paritate: 1 ^ 0 ^ 0 ^ 1 = 0
A adaugă bitul de paritate și trimite: 10010
*** EROARE DE TRANSMISIE ***
B primește: 1 1 010
B calculează paritatea totală: 1 ^ 1 ^ 0 ^ 1 ^ 0 = 1
B poate spune că a apărut o eroare în timpul transmisiei.

Valoarea parității calculată de B (1) nu este de acord cu bitul (0) primit. Următorul exemplu este similar, dar bitul de paritate este greșit:

 B primește: 1001 1
B calculează paritatea totală: 1 ^ 0 ^ 0 ^ 1 ^ 1 = 1
B poate spune că a apărut o eroare în timpul transmisiei.

Această schemă nu are nicio limită. Bitul de paritate asigură detectarea doar a unui număr impar de erori. Dacă apar un număr par de erori, nu funcționează. Luați în considerare următorul exemplu cu un număr par de erori:

 A vrea să transmită: 1001
A calculează bitul de paritate: 1 ^ 0 ^ 0 ^ 1 = 0
A adaugă bitul de paritate și trimite: 10010
*** EROARE DE TRANSMISIE ***
B primește: 1 1 01 1
B calculează paritatea totală: 1 ^ 1 ^ 0 ^ 1 ^ 1 = 0
B spune că transmisia a avut succes, chiar dacă au existat erori.

B observă o paritate uniformă, așa cum era de așteptat, și, prin urmare, nu reușește să caute două erori.

Utilizare

Datorită simplității sale, paritatea este utilizată în multe dispozitive hardware în care operațiile pot fi repetate în caz de dificultate sau dacă este util doar să știm că a apărut o eroare. De exemplu, autobuzele SCSI și PCI folosesc paritatea pentru a găsi erori de transmisie, iar multe cache-uri de microprocesor includ acest sistem de protecție. Deoarece cache-urile de date sunt doar o copie a memoriei RAM, dacă se găsește o eroare acolo, acesta poate fi șters și reîncărcat.

În transmisiile de date seriale, este utilizat în mod obișnuit un format de 7 biți, cu un bit de paritate uniform și unul sau doi biți de oprire. Acest format poate fi utilizat pentru cei 7 biți ai codului ASCII .

linkuri externe