Pregunta

Escribo un nuevo programa que compara 2 Integer Unsigned de dos dígitos. Se compara por hamming distancias. Pero mi algoritmo no funciona perfectamente. ¿Puedes decirme qué hay de malo en este código :( muchas gracias!

Este es mi método de conteo;

int countHammDist(unsigned int n, unsigned int m)
{
int i=0;
unsigned int count = 0 ;
for(i=0; i<8; i++){
if( n&1 != m&1 ) {
    count++;
    }
n >>= 1;
m >>= 1;

}
return count;
}

A y B Binarios de 8 bits.

 PrintInBinary(a);
 PrintInBinary(b);

 printf("\n %d", countHammDist(a,b));

Déjame mostrarte la salida;

Enter two unsigned integers (0-99): 55 64
Your choices are 55 and 64
Number A: 00110111
Number B: 01000000
Hamming distance is ; 5
¿Fue útil?

Solución

Ponga parántesis alrededor de N & 1 y M & 1.

if ((n&1) != (m&1))

http://ideone.com/f7kyzg

Esto se debe a! = Es antes y: http://www.swansontec.com/sopc.html

Otros consejos

Necesitas cambiar m también para comparar los bits correctos.

Y debe cambiarlos independientemente de si la prueba de igualdad pasa. (Mueva los cambios fuera del interior } )

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top