Coloque paranteses em torno de N & 1 e M & 1.
if ((n&1) != (m&1))
Isso é porque! = É antes e: http://www.swansontec.com/sopc.html
Pergunta
Escrevo um novo programa que compara 2 dois dígitos não assinados. Compara -se por distâncias de hamming. Mas meu algoritmo não funciona perfeitamente. Você pode me dizer o que há de errado com este código :( muito obrigado !!
Este é o meu método de contagem;
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;
}
Binários A e B de 8 bits.
PrintInBinary(a);
PrintInBinary(b);
printf("\n %d", countHammDist(a,b));
Deixe -me mostrar a sua saída;
Enter two unsigned integers (0-99): 55 64
Your choices are 55 and 64
Number A: 00110111
Number B: 01000000
Hamming distance is ; 5
Solução
Coloque paranteses em torno de N & 1 e M & 1.
if ((n&1) != (m&1))
Isso é porque! = É antes e: http://www.swansontec.com/sopc.html
Outras dicas
Você precisa mudar m
Também para comparar os bits certos.
E você precisa mudá -los, independentemente de o teste de igualdade passar. (Mova os turnos para fora do interior }
)