Escolar Documentos
Profissional Documentos
Cultura Documentos
Código de Hamming, assim como apresentado na aula, é um código de detecção e permite não
apenas detectar o erro de um (1) bit, mas também a localização do bit errado. É geralmente
usado para comunicações em que o grau de correção de erros seja importante de ser
efetuado, sendo assim utilizado para compor os frames a serem enviados.
Sabemos que para a transmissão e possível correção de um erro, devemos enviar um frame
com “m + r” bits, onde “m” são os dados e “r” os bits de verificação. Mas como saber qual o
valor de bits “k” a serem utilizados para a criação de uma matriz como na Figura 1? K é uma
sequência de bits formados por “m+r” bits, então “k > m” e “k=m+r” onde primeiramente
devemos saber o número de “m” para poder escrevê-lo como na Tabela 1, isto é, “m+r” deve
ser menor ou igual a 2x, onde x= {0, 1, 2,3...} obtendo-se assim o valor de k, onde “k>=2x”.
Lembrando-se que não se pode ter um “x” que ultrapasse o valor de “m” e tenham bits de
espaços sem dados de “m” ou “r”, por exemplo, utilizar 24 para apenas 8 bits de m, sobrariam
4 bits sem dados.
Por exemplo, para a Figura 1, a letra “H” tem sua representação em ASCII como:
H -> 1001000
Tomando como base o exposto onde os bits de potências de 2 são os bits de verificação ou
paridade, chamados de “r” temos:
1 0 0 1 0 0 0
B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11
20 21 22 23
Tabela 1
Para calcular os bits de verificação (Tabela 2) se faz o cálculo com OU Exclusivo (XOR) da
seguinte forma:
B1 B3 B5 B7 B9 B11 1 0 1 0 0 =0
B2 B3 B6 B7 B10 B11 1 0 1 0 0 =0
B4 B5 B6 B7 0 0 1 =1
B8 B9 B10 B11 0 0 0 =0
Tabela 2
0 0 1 1 0 0 1 0 0 0 0
B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11
20 21 - 22 - - - 23 - - -
Tabela 3
Da mesma forma, para verificar se os bits recebidos são válidos faz-se o seguinte cálculo:
k1 B1 B3 B5 B7 B9 B11 0 1 0 1 0 0 =0
k2 B2 B3 B6 B7 B10 B11 0 1 0 1 0 0 =0
K3 B4 B5 B6 B7 1 0 0 1 =0
K4 B8 B9 B10 B11 0 0 0 0 =0
Tabela 4
Se k1 = k2 = k3 = k4 = 0, então não há erro (como apresentado na Tabela 4).
0 0 1 1 0 0 1 1 0 0 0
B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11
20 21 - 22 - - - 23 - - -
Tabela 5
k4k3k2k1
Determina a posição do bit errado. Isto é, se k4k3k2k1 = 1000 (Vide Tabela 6), que neste caso
está em B8.
k1 B1 B3 B5 B7 B9 B11 0 1 0 1 0 0 =0
k2 B2 B3 B6 B7 B10 B11 0 1 0 1 0 0 =0
K3 B4 B5 B6 B7 1 0 0 1 =0
K4 B8 B9 B10 B11 1 0 0 0 =1
Tabela 6