Bitweise tauschen

ZypriZ

Mitglied
Hey kann mir jmd. codieren wie ich in Java bitweise innerhalb eines Feld tausche.

z.B.
das Feld vor der Vertauschung:
4 6 2 8 9 12 77 31 23 77
Das Feld nach der Vertauschung:
12 77 31 23 77 4 6 2 8 9

Arrayname ist f
 

AquaBall

Top Contributor
ich glaube bitweise meinst du wohl nicht, sonst würde so was stehen wie: 01011011101110

Wenn's ein array ist, dann gehts über f[x]=f[y]; meinst du wohl auch nicht.

Wenn du bytes meinst, dan schau dir die Operatoren '>>' und '<<' sowie '&' und '|' an!
highByte= f>>0x08;
highValue= f & 0xF0;
lowByte = lowValue = f & 0x0F;
(so irgendwie)
 

ZypriZ

Mitglied
ich glaube bitweise meinst du wohl nicht, sonst würde so was stehen wie: 01011011101110

Wenn's ein array ist, dann gehts über f[x]=f[y]; meinst du wohl auch nicht.

Wenn du bytes meinst, dan schau dir die Operatoren '>>' und '<<' sowie '&' und '|' an!
highByte= f>>0x08;
highValue= f & 0xF0;
lowByte = lowValue = f & 0x0F;
(so irgendwie)

Sagen wir mal so.

Java:
 int x = 5; int y = 10;

So und jetzt soll x den Wert 10 bekommen und y 5.
 
I

Impressum

Gast
Das geht auch mit einfacher Schulmathematik, musst halt nur mal ein bisschen drüber nachdenken ???:L
 

AquaBall

Top Contributor
Ahaa!
Es geht um ein (in der Praxis völlig unnötiges) Lehrstück, dass du die Funktion von XOR erleben sollst!.
Alles klar!

Klassische Lehr-problem.
Gut um die bitLogik durchzukauen.
In der Praxis aber VÖLLIG überflüssig (ich habe in Jahrzehnten nie sowas für die Praxis erlebt).

Als Dreieckstausch bezeichnet man in der Programmierung ein Verfahren zum Austausch der Werte zweier Variablen. Dabei wird eine Hilfsvariable verwendet, um den Wert der Variablen, die zuerst überschrieben wird, zwischenzuspeichern. Ein typischer Anwendungsfall des Dreieckstauschs besteht zum Beispiel in einigen Sortieralgorithmen wie dem Bubblesort. Das allgemeine Prinzip sieht wie folgt aus:
Code:
    temp := v1
    v1 := v2
    v2 := temp
Wenn es sich bei den Werten der beiden auszutauschenden Variablen um binär verknüpfbare Werte handelt, kann man den Tausch durch wiederholte XOR-Verknüpfungen (unter Ausnutzung des Gesetzes (A xor B) xor B = A) auch gänzlich ohne Hilfsvariable verwirklichen:
... (Selbst denken!)
Zwei weitere Möglichkeiten zum Tauschen von Ordinalen ohne Hilfsvariablen besteht im wiederholten Addieren und Subtrahieren:
... (Selbst denken!)
oder:
... (Selbst denken!)
(Rat mal woher ich das habe, und wielange ich gesucht habe?)
 
Zuletzt bearbeitet:
S

Spacerat

Gast
Kollegen... Was ist denn XOR bitte für eine Bezeichnung? :( Das heisst Antivalenz und ist das Gegenteil der Äquivalenz.
Microcontroller ist gut... Speicherprogrammierbare Steuerung (SPS) triffts eher. Nicht das ich hier jemanden belehren will, aber das bin ich meiner Berufsehre schuldig. ;)
Aber man benötigt es ja nicht nur dort, meines Wissens lassen sich damit unheimlich viele Integerwerte (z.B. IP-Adressen) maskieren, negieren und vom Einer- ins Zweierkomplement oder andersherum umrechnen.
Vor allem aber machte es bei simplen Verschlüsselungen irgendwann mal Sinn, ist aber schon länger her.
Aber mit tauschen hat das relativ wenig zu tun, eigentlich nur so viel, dass man die Eingangswerte a und b vertauschen kann und sie trotzdem das selbe Ergebnis liefern.
Bei den Zahlenreihen des TOs kommt daher 8 75 29 31 68 8 75 29 31 68 heraus (nehm' ich jedenfalls an).
 

AquaBall

Top Contributor
Selbstverständlich ist XOR (oder - sorry - Antivalenz) eine wichtige Operation,
und muss man als Programmierer unbedingt kennen und verstehen. (Vor allem maskieren, codieren, ...)


Aber die Frage war ja explizit auf das Vertauschen bezogen. Diese weitverbreitete Übung zum Dreieckstausch über XOR ohne Hilfsvariable halt ich für völlig praxisuntauglich. Ist mir in der Praxis noch nie brauchbar untergekommen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Bitweise Operatoren" >>>",">>","<<" erklärung Java Basics - Anfänger-Themen 5
P Bitweise Operatoren Java Basics - Anfänger-Themen 2
Phillip Bitweise Operatoren Java Basics - Anfänger-Themen 11
A Bitweise Operatoren Java Basics - Anfänger-Themen 1
A string bitweise in long umwandeln Java Basics - Anfänger-Themen 7
G Logische und Bitweise Operatoren Java Basics - Anfänger-Themen 2
M Datentypen Bitweise Dividieren Java Basics - Anfänger-Themen 3
J Bitweise addieren Java Basics - Anfänger-Themen 6
V Bitweise Operatoren in der Grafikprogrammierung Java Basics - Anfänger-Themen 2
S Bitweise Verarbeitung? Java Basics - Anfänger-Themen 7
S byte-array bitweise auslesen Java Basics - Anfänger-Themen 14
S Bitweise Buchstaben verändern! Java Basics - Anfänger-Themen 26
ptcho Werte/Position nach dem Funktionsaufruf tauschen? Java Basics - Anfänger-Themen 1
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
GAZ String replace() Elemente tauschen Java Basics - Anfänger-Themen 13
tingc Variablenwerte tauschen Java Basics - Anfänger-Themen 4
C Methode Seiten tauschen eines erstellten Rechtecks mit Seite A und B Java Basics - Anfänger-Themen 9
X Array erstes und letztes Element tauschen Java Basics - Anfänger-Themen 2
J Innerhalb von Zeichenketten tauschen Java Basics - Anfänger-Themen 1
Y Objektinhalte tauschen Java Basics - Anfänger-Themen 9
M ungerade zahlen eines arrays nach hinten tauschen Java Basics - Anfänger-Themen 13
M Werte tauschen Java Basics - Anfänger-Themen 10
R Umlaute mit Switch-Case tauschen Java Basics - Anfänger-Themen 26
G Ziffern tauschen Java Basics - Anfänger-Themen 15
T Inhalte zweier Variablen tauschen Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Neue Themen


Oben