Ponga parántesis alrededor de N & 1 y M & 1.
if ((n&1) != (m&1))
Esto se debe a! = Es antes y: http://www.swansontec.com/sopc.html
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
Solución
Ponga parántesis alrededor de N & 1 y M & 1.
if ((n&1) != (m&1))
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 }
)