Num código de deteção, como paridade, o erro de 1 bit é detectado.
Mas não se sabe onde está o erro, ou seja, qual o bit errado. O dado
precisa ser lido (ou retransmitido, no caso de comunicação de dados) de
novo.
Num código de correção, sabe-se onde está o erro, de modo que é
possível corrigi-lo.
Vejamos o código de Hamming para dados de 4 bits. Vamos acrescentar nesse
caso mais 3 bits adicionais. Primeiro um exemplo.
Seja o dado 1101. Para obter os 3 bits extras, vamos inicialmente encarar 1101 como os bits nas regiões de interseção , onde são diagramas de Venn.
Agora vamos acrescentar um bit de paridade em cada uma das 3 regiões vazias acima para dar paridade par em , e .
Erro de 1 bit (qualquer um dos 7 bits) pode ser localizado.
Tal erro pode ser detectado de modo simples, como se segue:
Agora vamos rever o método:
Sejam os (igual a 4) bits do dado original
Vamos acrescentar (igual a 3) bits extras e produzimos o seguinte código
de (igual a 7) bits
1 | |
0 | |
1 | |
0 | |
1 | |
0 | |
1 |
Ao ler a memória desses 7 bits, suponhamos o seguinte resultado de leitura (com erro de 1 bit):
Calculamos os valores
:
1 | |
0 | |
1 |
Temos
Se
então não há erro.
Caso contrário,
fornecerá o valor binário
de do bit errado .
No nosso caso,
indica que está
errado. Logo, deve ser 1 ao invés de 0.
A tabela baixo mostra o número de bits adicionais para vários tamanhos de palavras:
Palavra | Extras | Total | ``overhead'' |
bits | bits | ||
8 | 4 | 12 | 50 % |
16 | 5 | 21 | 31 |
32 | 6 | 38 | 19 |
64 | 7 | 71 | 11 |
128 | 8 | 136 | 6 |
256 | 9 | 265 | 4 |