Variablenwerte mit Xor vertauschen
Cheaper
- java
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 12
kann mir das einer für Anfänger erklären??
MfG Cheaper
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
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??
MfG Cheaper
Hallo Cheaper,
das Beispiel kommt aus meinem Java-Buch (http://www.galileodesign.de/openbook/javainsel5/javainsel02_007.htm#Rxx747java02007040000AE1F04E1E8) und wird dort auch ein wenig erklärt.
In der Wikipedia http://en.wikipedia.org/wiki/XOR_swap_algorithm gibt's das aber noch mal ausführlicher.
Grüße
Christian | http://www.tutego.com/