You are on page 1of 3

Código de Hamming

Por Lucas Scotta em 29/04/2011

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.

Para se calcular, pegasse os bits da palavra de código, e os numera consecutivamente,


começando com o bit 1 da extremidade esquerda, com o bit 2 imediatamente a sua direita e
assim por diante (como feito na Tabela 1). Os bits que são potências de 2 (1, 2, 4, 8, 16 etc.)
são bits de verificação. Os outros (3, 5, 6, 7, 9 etc.) são preenchidos com os “m” bits de dados.
Cada bit de verificação força a paridade de algum conjunto de bits, incluindo seu próprio
conjunto, a ser par (ou impar). Um bit pode ser incluído em vários cálculos de paridade. Se
quiser ver para quais bits de verificação o bit de dados da posição k contribui, reescreva k
como a soma de potencias de 2.

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

Chegando ao resultado da Tabela 3:

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

Como exercício para a próxima a ser entregue apresente o calculo


para as outras letras da Figura 1.

Figura 1: Exemplo de Código de Hamming

Da mesma forma, para verificar se os bits recebidos são válidos faz-se o seguinte cálculo:

• Baseado na Tabela 3 realiza-se um cálculo de 4 bits, denominados k1; k2; k3 e k4:

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).

Mas, se o lado receptor receber os dados da Tabela 5 ao invés da Tabela 3:

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

Então o número binário codificado pelos 4 bits,

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

Como exercício, simule um erro quando for se calcular as letras “o” e


“g”.

You might also like