Capítulo 2 • Organização de sistemas de computadores 63
bits de dados. No total, a palavra de memória tem 21 bits (16 de dados, 5 de paridade). Neste exemplo, usaremos
(arbitrariamente) a paridade par.
Cada bit de paridade verifica posições específicas de bits; o bit de paridade é estabelecido de modo que o número de
ls nas posições verificadas seja par. As posições de bits verificadas pelos bits de paridade são
Bit 1 verifica bits 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21.
Bit 2 verifica bits 2, 3, 6, 7, 10, 11, 14, 15, 18, 19.
Bit 4 verifica bits 4, 5, 6, 7, 12, 13, 14, 15, 20, 21.
Bit 8 verifica bits 8, 9, 10, 11, 12, 13, 14, 15.
Bit 16 verifica bits 16, 17, 18, 19, 20, 21.
Em geral, o bit b é verificado pelos bits b v b2, ..., b. tais que b { + b2 + ... + b. = b. Por exemplo, o bit 5 é verificado pelos
bits 1 e 4 porque 1 +4 = 5. O bit 6 é verificado pelos bits 2 e 4 porque 2 + 4 = 6 e assim por diante.
A Figura 2.15 mostra a construção de um código de Hamming para a palavra de memória de 16 bits
1111000010101110. A palavra de código de 21 bits é 001011100000101101110. Para ver como funciona a
correção de erros, considere o que aconteceria se o bit 5 fosse invertido por uma sobrecargaelétrica na linha de
força. A nova palavra de código seria 001001100000101101110 em vez de 001011100000101101110. Os 5 bits de paridade
serão verificados com os seguintes resultados:
Bit de paridade 1 incorreto (1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21 contêm cinco ls).
Bit de paridade 2 correto (2, 3, 6, 7, 10, 11, 14, 15, 18, 19 contêm seis ls).
Bit de paridade 4 incorreto (4, 5, 6, 7, 12, 13, 14, 15, 20, 21 contêm cinco ls).
Bit de paridade 8 correto (8, 9, 10, 11, 12, 13, 14, 15 contêm dois ls).
Bit de paridade 16 correto (16, 17, 18, 19, 20, 21 contêm quatro ls).
Figura 2.15 Construção do código de Hamming para a palavra de memória 1111000010101110 adicionando 5 bits de verificação aos 16 bits de
dados.
Palavra de memória 1111000010101110
[Õ][Õ]J_[Õ]J i l_[õ]_o__o__o^_o_J 9_J_[j]_9_J 5 5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
* 11
O número total de ls nos bits 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 e 21 deve ser par porque está sendo usada a paridade par. O bit
incorreto deve ser um dos bits verificados pelo bit de paridade 1 - ou seja, bit 1, 3, 5, 7, 9,
11, 13, 15, 17, 19 ou 21. O bit de paridade 4 está incorreto, o que significa que um dos bits 4, 5, 6, 7, 12, 13, 14, 15, 20 ou 21
está incorreto. O erro deve ser um dos bits que está em ambas as listas, a saber, 5, 7, 13, 15 ou 21. Contudo, o bit 2 está
correto, o que elimina os bits 7 e 15. De modo semelhante, o bit 8 está correto, eliminando o 13. Por fim, o bit 16 está
correto, eliminando o 21. O único que sobrou é 5, que é o bit que está com erro. Uma vez que foi lido como um 1, ele
deveria ser um 0. Dessa maneira, os erros podem ser corrigidos.
Um método simples para achar o bit incorreto é calcular antes todos os bits de paridade. Se todos estiverem corretos, não
houve nenhum erro (ou então houve mais de um). Em seguida, somar todos os bits de paridade