Besonderer Befehl in Java
Hallo,
hierbei handelt es sich um folgenden Befehl
Diesen Befehl habe ich in einem Quellcode gefunden, der folgendes Prinzip umschrieb
Mit dem Befehl sah das dann so aus
Ich habe nicht wirklich verstanden, was dieser Befehl macht.
Vielleicht weiß es ja einer von euch.
X
hierbei handelt es sich um folgenden Befehl
^=
Diesen Befehl habe ich in einem Quellcode gefunden, der folgendes Prinzip umschrieb
Feld[1] = Feld[1] + Feld[2];
Feld[2] = Feld[1] - Feld[2];
Feld[1] = Feld[1] - Feld[2];
Mit dem Befehl sah das dann so aus
Feld[1] ^= Feld[2];
Feld[2] ^= Feld[1];
Feld[1] ^= Feld[2];
Ich habe nicht wirklich verstanden, was dieser Befehl macht.
Vielleicht weiß es ja einer von euch.
X
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 124973
Url: https://administrator.de/contentid/124973
Ausgedruckt am: 25.11.2024 um 04:11 Uhr
7 Kommentare
Neuester Kommentar
Vereinfacht wird es jetzt nur bedingt.
Man braucht keine Hilfsvariable bei dieser Methode und verwendet sozusagen einen Trick in dem man XOR der binären Daten anwendet.
du kannst dies mit einem einfachen Rechenbeispiel nachstellen.
Feld[1] = 1 = 0001, Feld[2] = 2 = 0010
Erste Operation:
0001 = Feld[1]
0010 = Feld[2]
XOR
0011 = Feld[1]
Zweite Operation:
0011 = Feld[1]
0010 = Feld[2]
XOR
0001 = Feld[2]
Dritte Operation:
0011 = Feld[1]
0001 = Feld[2]
XOR
0010 = Feld[1]
Und voila - die Werte sind vertauscht - Feld[1] = 2 = 0010 und Feld[2] = 1 = 0001
XOR Tabelle zur Erinnerung - siehe Link:
0 und 0 = 0
0 und 1 = 1
1 und 0 = 1
1 und 1 = 0
Einfach nachrechnen
Man braucht keine Hilfsvariable bei dieser Methode und verwendet sozusagen einen Trick in dem man XOR der binären Daten anwendet.
du kannst dies mit einem einfachen Rechenbeispiel nachstellen.
Feld[1] = 1 = 0001, Feld[2] = 2 = 0010
Erste Operation:
0001 = Feld[1]
0010 = Feld[2]
XOR
0011 = Feld[1]
Zweite Operation:
0011 = Feld[1]
0010 = Feld[2]
XOR
0001 = Feld[2]
Dritte Operation:
0011 = Feld[1]
0001 = Feld[2]
XOR
0010 = Feld[1]
Und voila - die Werte sind vertauscht - Feld[1] = 2 = 0010 und Feld[2] = 1 = 0001
XOR Tabelle zur Erinnerung - siehe Link:
0 und 0 = 0
0 und 1 = 1
1 und 0 = 1
1 und 1 = 0
Einfach nachrechnen
Das heißt also die Feld[1]-Variable wird irgendwo gespeichert, die Feld[2] auf die erste geschrieben und der vorerst gespeicherte Wert dann vom neuen Feld[2] abgezogen.
Nein, macht er nicht. Und wie man nach Lektüre des Wikipedia Artikels auf die Idee kommen kann ist mir auch nicht klar. Vermutlich nicht gelesen, oder?Er macht eine bitweise XOR Verknüpfung der beiden Werte.
Das bei entsprechenden Integerwerten es so aussehen kann wie oben ist richtig, aber er arbeitet anders.
Und ich würde Dir mal das Buch Thinking in Java empfehlen, gibts als kostenlosen Download hier: http://www.mindview.net/Books/TIJ/