Legen Sie Paranthesen um N & 1 und M & 1.
if ((n&1) != (m&1))
Das liegt daran, dass! = Ist vor &: http://www.swansontc.com/sopc.html
Frage
Ich schreibe ein neues Programm, das 2 zwei Ziffern unsignierte Ganzzahl vergleicht. Vergleich durch Hamming -Entfernungen. Aber mein Algorithmus funktioniert nicht perfekt. Kannst du mir sagen, was mit diesem Code los ist :( Vielen Dank !!
Dies ist meine Zählmethode;
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 und B 8 -Bit -Binärdateien.
PrintInBinary(a);
PrintInBinary(b);
printf("\n %d", countHammDist(a,b));
Lassen Sie mich Ihnen die Ausgabe zeigen;
Enter two unsigned integers (0-99): 55 64
Your choices are 55 and 64
Number A: 00110111
Number B: 01000000
Hamming distance is ; 5
Lösung
Legen Sie Paranthesen um N & 1 und M & 1.
if ((n&1) != (m&1))
Das liegt daran, dass! = Ist vor &: http://www.swansontc.com/sopc.html
Andere Tipps
Sie müssen sich verschieben m
Auch um die richtigen Teile zu vergleichen.
Und Sie müssen sie unabhängig davon verändern, ob der Gleichstellungstest besteht. (Bewegen Sie die Schichten außerhalb des Innens }
)