Distância+de+Hamming

=Distância de Hamming=

A Distancia de Hamming, criada por Richard Hamming, pode ser definida como o número de posições de bit nas quais as duas palavras de código são diferentes. Sua principal função é que se, por exemplo, duas palavras de código estiverem separadas por uma distância de Hamming X, e atribuindo o valor 2 a X, serão necessários 2 erros de bits únicos para fazer a conversão de uma na outra. A distância de Hamming está diretamente ligada à correção e detecção de erros, uma vez que estas dependem de sua distância.



**Complemento:** O problema da distância de Hamming consiste em encontrar o número de posições em que duas seqüências de bits de mesmo tamanho diferem. Por exemplo, dadas as sequências //A = 11011101// e //B = 11000101//, a distância de Hamming entre //A// e //B//, denotada por //Hamming( A, B )//, é 2. Basta verificar que os bits de //A// e //B// diferem nas posições 3 e 4 (começando de zero da direita para esquerda). Para calcular a distância algoritmicamente, a solução consiste em gerar uma nova seqüência de bits - //C// - que marca as posições nas quais os bits de //A// e //B// diferem entre si. Ou seja, no exemplo acima, a seqüência procurada é //C = 00011000//. Para encontrar //C//, será suficiente aplicar o operador XOR (//"eXclusive OR"// - "OU exclusivo") cuja definição matemática é //XOR( a, b ) = a + b (mod 2)//, ou seja, a soma módulo 2 entre os números //a// e //b//. Após efetuado este calculo, basta contar a quantidade de 1's que aparecem na sequência e essa será a distância de Hamming. Em C++, o cálculo de //C// é feito diretamente através do operador binário //^// que aplica o //XOR// bit a bit entre os números desejados. Por exemplo, a saída do código // unsigned a = 255, b = 127; std::cout << (a ^ b); //  será 128, pois em binário, 255 equivale à 11111111. Já 127 equivale à 01111111. Assim, XOR(11111111, 01111111) = 10000000, que é 128 na base dez. Uma forma de codificar o algoritmo afim de contar a quantidade de bits ligados em C++ é a utilização das operações //shift right// e em conjunto com testes iterativos sobre o bit menos significativo.    Distância de Hamming entre duas sequencias. Disponível em: < http://forum.imasters. uol.com.br/index.php?/topic/265479-tutorial-distancia-de-hamming-entre-duas-sequencias-de-bits/>. Acesso em: 03 out. 2009. **Editores:** Carolina Zanini N°06 Nicole Reny Nº30 1ºTA
 * Referência: **