Ich habe ein wenig mit C herumgespielt und finde die Möglichkeit, Bits direkt zu manipulieren, faszinierend und mächtig (und gefährlich, wie ich annehme). Ich war neugierig, was der beste Weg wäre, um verschiedene Bits in C zu vergleichen sein würde. Zum Beispiel wird die Zahl 15 in Binärform dargestellt als:
00001111
Und die Zahl 13 wird dargestellt als:
00001101
Wie würden Sie vergleichen, welche Bits unterschiedlich sind, ohne sie zu zählen? Es wäre einfach, Shifts zu verwenden, um festzustellen, dass 15 4 1en und 13 3 1en enthält, aber wie würden Sie den Unterschied zwischen den beiden ausgeben (z. B. dass die 2^1-Stelle zwischen den beiden unterschiedlich ist)? Ich kann mir einfach keinen einfachen Weg vorstellen, dies zu tun. Jeder Hinweis würde sehr geschätzt werden!
EDIT: Ich sollte klargestellt haben, dass ich weiß, XOR ist der richtige Weg, um dieses Problem zu gehen, aber ich hatte ein Problem mit der Umsetzung. Ich schätze, mein Problem war der Vergleich eines Bits nach dem anderen (und nicht die Erzeugung der Differenz per se). Die Lösung, die ich gefunden habe, ist:
void compare(int vector1, int vector2) {
int count = 0;
unsigned int xor = vector1 ^ vector2;
while (count < bit_length) {
if (xor % 2 == 1) { //would indicicate a difference
printf("%d ", count);
}
xor >>= 1;
count++;
}
}