Paridade Bit
3 de Março de 2023
Os erros na comunicação binária referem-se a situações em que a mensagem recebida difere da mensagem que se pretendia transmitir. Isto pode ocorrer por várias razões, tais como fraca integridade do sinal, ruído ou falhas do sistema. Os erros podem levar a interpretações incorretas da mensagem e afetar a precisão e a fiabilidade da comunicação por sinal digital. Uma solução para reduzir os erros na comunicação binária é a utilização de um bit de paridade.

Neste artigo:
O que é o bit de paridade?
Um bit de paridade, também designado por verificação de paridade, é um bit adicional adicionado a um conjunto de bits de dados binários com o objetivo de detetar erros durante a transmissão de dados. O bit de paridade é utilizado para verificar se o número de 1s numa sequência de dados é par ou ímpar, o que dá origem a dois tipos: o bit de paridade par e o bit de paridade ímpar.
Erros binários
Ocorre um erro na comunicação binária quando um 1 se transforma inesperadamente num 0 ou vice-versa.
Saiba mais: Padrão de comunicação de dados em série RS232
Paridade par
Num sistema de paridade par, o bit de paridade é definido como 1 ou 0, de modo a que o número total de bits 1, incluindo o bit de paridade, seja um número par.
Como calcular a paridade par
Se o número de 1s na sequência de dados for ímpar, o bit de paridade é definido como 1 para garantir que o número total de 1s, incluindo o bit de paridade, seja par. Se o número de 1s na sequência de dados já for par, o bit de paridade é definido como 0.
Paridade ímpar
Num sistema de paridade ímpar, o bit de paridade é definido como 1 ou 0, de modo a que o número total de bits 1, incluindo o bit de paridade, seja ímpar.
Como calcular a paridade ímpar
Se o número de 1s na cadeia de dados for par, o bit de paridade é definido como 1 para garantir que o número total de 1s, incluindo o bit de paridade, seja ímpar. Se o número de 1s na cadeia de dados já for ímpar, o bit de paridade é definido como 0.
Exemplos de bits de paridade
| Sequência de dados de 7 bits | Número de bits de valor 1 | 8 bits, incluindo o bit de paridade | |
|---|---|---|---|
| paridade par | paridade ímpar | ||
| 0000000 | 0 | 00000000 | 00000001 |
| 1100001 | 3 | 11000011 | 11000010 |
| 1100101 | 4 | 11001010 | 11001011 |
| 1111111 | 7 | 11111111 | 11111110 |
A verificação do bit de paridade é frequentemente utilizada na transmissão de caracteres ASCII, em que o 8.º bit é reservado como bit de paridade, enquanto os restantes 7 bits são utilizados para codificar o caractere.
Como funciona o bit de paridade
Antes de transmitir dados, tanto o emissor como o recetor têm de chegar a acordo quanto à paridade ímpar ou par. Antes de enviar cada pacote de dados (sequência de bits), o remetente calcula o seu bit de paridade (0 ou 1) para garantir que este corresponde à paridade acordada (ímpar ou par). Após a receção, o recetor verifica a paridade dos dados recebidos em relação à paridade esperada. Se não corresponderem, isso indica um erro, e os dados podem ser descartados ou corrigidos através do pedido de uma retransmissão.
O bit de paridade é utilizado apenas para ajudar a detetar erros, mas não tem a capacidade de corrigir quaisquer erros, uma vez que não consegue identificar o bit específico que está corrompido. Assim, a única opção para corrigir erros é descartar toda a sequência de dados e solicitar uma retransmissão ao remetente.
Posição do bit de paridade
Embora não exista uma regra definida para a posição do bit de paridade, este é normalmente adicionado no final da sequência binária da mensagem, por convenção.
Detecção de erros
A verificação de paridade no recetor permite detetar erros através da comparação da paridade do sinal recebido com a paridade esperada. Se houver uma discrepância, o recetor pode solicitar uma retransmissão ao transmissor.
É possível determinar se o número de 1s numa cadeia de dados binários é par ou ímpar através do operador módulo. O módulo, ou «mod», é uma operação matemática que determina o resto da divisão de um número inteiro por outro. A operação de módulo é representada pelo símbolo %.
Utilizando o módulo, podemos determinar se um número é par, ou seja, se pode ser dividido por 2 sem resto. Por outro lado, se um número deixar um resto ao ser dividido por 2, é considerado ímpar.
O exemplo de programa em C que se segue ilustra o processo de verificação da paridade utilizando o módulo:
#includeint main() { unsigned char byte; int num_ones = 0; printf("Enter a byte (in decimal): "); scanf("%hhu", &byte); // Count the number of 1s in the byte for (int i = 0; i < 8; i++) { if ((byte >> i) & 1) { num_ones++; } } // Detect parity with mod 2 and print the parity type. if (num_ones % 2 == 0) { // printf("Even parity\n"); } else { printf("Odd parity\n"); } return 0; }
O programa começa por ler um byte introduzido pelo utilizador. Em seguida, utiliza um ciclo para contar o número de bits 1 no byte. Isto é feito deslocando o byte para a direita, uma posição de bit de cada vez (de 0 a 7), e verificando se o bit resultante é 1. Se for, a contagem de bits 1 é incrementada. Por fim, o programa verifica se o número de bits 1 é par ou ímpar e apresenta a mensagem correspondente.
Note-se que o programa utiliza um `unsigned char` para armazenar o byte, que é um inteiro de 8 bits capaz de conter valores entre 0 e 255. O especificador de formato %hhu é utilizado com a função `scanf()` para ler um valor de byte introduzido pelo utilizador.
Como adicionar um bit de paridade
Vamos analisar um exemplo em que precisamos de transmitir a sequência de dados 1100101. Primeiro, contamos o número de 1s na sequência de dados e determinamos se o resultado é par ou ímpar, utilizando o operador mod com 2 como divisor:
(1+1+0+0+1+0+1) mod 2
4 mod 2 = 0
Uma vez que 4 dividido por 2 não tem resto, o resultado é 0, o que indica que temos um número par de «1». Se tivermos acordado uma paridade par, acrescentamos um «0» como bit de paridade ao final da mensagem, resultando em 11001010, que agora pode ser enviada. Em alternativa, se tivermos acordado a paridade ímpar, invertemos o bit de paridade e acrescentamos um «1» em vez disso, resultando em 11001011 como mensagem final que pode ser transmitida.
Utilizações do bit de paridade
- Detecção de erros: Uma das principais funções dos bits de paridade é a deteção de erros durante a transmissão de dados.
- Armazenamento de memória: Os bits de paridade também são utilizados nos sistemas de memória dos computadores para detetar erros quando os dados são armazenados na memória. Quando os dados são armazenados na memória, existe sempre o risco de ocorrerem erros devido a vários fatores, tais como interferências eletromagnéticas, falhas de hardware, etc.
- Sistemas RAID: O bit de paridade também é utilizado na Matriz Redundante de Discos Baratos (RAID). O RAID também pode ser designado por «Matriz Redundante de Unidades Independentes». Os sistemas RAID utilizam vários discos para armazenar dados de forma redundante e proteger contra falhas nos discos. Recorrem à paridade para garantir a tolerância a falhas.
Saiba mais: EMI (Interferência eletromagnética)
Conclusão
Em conclusão, o bit de paridade é um mecanismo de deteção de erros simples, mas eficaz, que pode ajudar a garantir a precisão do armazenamento e da transmissão de dados. Embora os bits de paridade não sejam infalíveis e apenas consigam detetar alguns erros, continuam a ser úteis para muitas aplicações na comunicação de dados binários.
