Hello out there!
int x = 12,
y = 49;
x ^= y; // x = x ^ y
y ^= x; // y = y ^ x
x ^= y; // x = x ^ y
System.out.println( x + " " + y ); // Ausgabe ist: 49 12kann mir das einer für Anfänger erklären??
Schreib das mal so auf, dass du nicht vorhandenen Variablen einen neuen Wert zuweist, sondern neue einführst:
Ausgangswerte: x0, y0
x1 = x0 ^ y0
y1 = y0 ^ x1 = y0 ^ (x0 ^ y0) = x0 (mit Wahrheitstabelle leicht zu zeigen)
x2 = x1 ^ y1 = (x0 ^ y0) ^ x0 = y0 (dasselbe in Grün)
Was für einzelne Bits gilt, gilt auch für Bitfolgen. Also ist am Ende x2 = y0 und y1 = x0; wenn du also die Variablen x und y jeweils überschreibst, tauschen sie durch die drei Operationen ihre Werte.
See ya up the road,
Gunnar
--
„Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
„Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)