Mettez des paranthes autour de N & 1 et M&1.
if ((n&1) != (m&1))
C'est parce que! = Est avant &: http://www.swansonte.com/sopc.html
Question
J'écris un nouveau programme qui compare 2 entiers non signés à deux chiffres. Compare par des distances de Hamming. Mais mon algorithme ne fonctionne pas parfaitement. Pouvez-vous me dire ce qui ne va pas avec ce code: (merci beaucoup !!
Ceci est ma méthode de comptage;
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;
}
Binaires A et B 8 bits.
PrintInBinary(a);
PrintInBinary(b);
printf("\n %d", countHammDist(a,b));
Permettez-moi de vous montrer de la sortie;
Enter two unsigned integers (0-99): 55 64
Your choices are 55 and 64
Number A: 00110111
Number B: 01000000
Hamming distance is ; 5
La solution
Mettez des paranthes autour de N & 1 et M&1.
if ((n&1) != (m&1))
C'est parce que! = Est avant &: http://www.swansonte.com/sopc.html
Autres conseils
Vous devez changer m
aussi pour comparer les bons bits.
Et vous devez les déplacer, que le test d'égalité passe. (Déplacez les changements à l'extérieur de l'intérieur }
)