XOR ^ Verknüpfung

OnDemand

Top Contributor
HAllo zusammen,

kann mir jemand von Euch meinen Denkfehler ausmerzen?

Ich soll 2 Strings mit XOR verknüpfen und das Ergebnis als binär ausgeben.

Meine Lösung:
Java:
	int zahl1 = 1234567;
		int zahl2 = 9876543;
		System.out.println("Wert1 = " + zahl1 + "- Entspricht: " + Integer.toBinaryString(zahl1));
		System.out.println("Wert2 = " + zahl2 + "- Entspricht: " + Integer.toBinaryString(zahl2));		
		System.out.println("Ergebnis als Zahl: " + (zahl1 ^ zahl2) + "\nErgebnis in binär: "+ (Integer.toBinaryString(zahl1 ^ zahl2)));
Ergebnis:
Code:
Wert1 = 1234567- Entspricht: 100101101011010000111
Wert2 = 9876543- Entspricht: 100101101011010000111111
Ergebnis als Zahl: 8676024
Ergebnis in binär: 100001000110001010111000


ABER:
In einer anderen Aufgabe, heißt es, XOR vergleicht 2 Werte bitweise zB:
10100100 ^ 00100101 = 10000001
Das Ergebnis resultiert daher, weil

Code:
1 !=  0   -> 1

0 == 0   -> 0

1 == 1   -> 0

0 == 0   -> 0

0 == 0   -> 0

1 == 1   -> 0

0 == 0   -> 0

0 != 1   -> 1

Warum ist dann aber mein obiges "Ergebnis in binär" so völlig unterschiedlich, als wenn ich auch dort jedes Zeichen von Wert1 und Wert2 vergleiche.

Irgendwie steh ich da grad so richtig auf dem Schlauch und hab nen fetten Denkfehler. Würde mich über Tipps freuen. Ich hoffe meine Frage kann jemand nachvollziehen :bloed:

LG
 
N

nillehammer

Gast
Der Denkfehler ist, dass Du nicht bedacht hast, dass Integer.toBinaryString führende Nullen nicht mit darstellt. Deswegen sind die beiden Strings unterschiedlich lang, obwohl ints natürlich immer 32Bit haben. Für den korrekten händischen bitweisen vergleich musst Du Wert1 solange vorne mit 0 auffüllen, bis beide Strings gleich lang sind. Dann kommt es hin.
 
Zuletzt bearbeitet von einem Moderator:

OnDemand

Top Contributor
Tatsache, dann passt das Erebnis, also ist ja meine Lösung korrekt :p

Wie könnte ich das jetzt mit Code machen, dass die Nullen aufgefüllt werden?
 

Gucky

Top Contributor
Du könntest auch Zeichen für Zeichen vergleichen mit .charAt(int) das Ertebnis schreibst du dann in einen String als Zeichen. Das sähe dann in etwa so aus:

char vergleich=str1.charAt(0)&str2.charAt(0);
str+=vergleich;

(um einen lässt sich das noch kürzen)
das halte ich für einfacher.

Eine Routine, die den längeren String abschneidet oder einfach aufhört zu vergleichen, wenn der kürzere String zuende ist, müsstest du auch noch implementieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jamie logische Verknüpfung zur Schaltjahr-Berechnung Java Basics - Anfänger-Themen 30
S Verknüpfung von Arraylisten Java Basics - Anfänger-Themen 3
B Erste Schritte Problem bei der Verknüpfung von zwei klassen Java Basics - Anfänger-Themen 8
R Klassen Klassen Verknüpfung Java Basics - Anfänger-Themen 6
W Verknüpfung von Räumen mit Hashset Java Basics - Anfänger-Themen 10
J Verknüpfung von JButton to JTextField Java Basics - Anfänger-Themen 4
Y Erste Schritte Verknüpfung zweier JAVA-Codes Java Basics - Anfänger-Themen 8
S Verknüpfung von .java Java Basics - Anfänger-Themen 4
sqsh logische verknüpfung Java Basics - Anfänger-Themen 3
A XOR Verknüpfung Java Basics - Anfänger-Themen 5
A Java Verknüpfung Java Basics - Anfänger-Themen 8
F Verknüpfung erstellen Java Basics - Anfänger-Themen 7
K Erstellen einer Verknüpfung Java Basics - Anfänger-Themen 3
G AND-Verknüpfung in JPQL-Queries! Java Basics - Anfänger-Themen 2
A lnk (Verknüpfung) in java Java Basics - Anfänger-Themen 10
A Oder Verknüpfung in do-Schleife Java Basics - Anfänger-Themen 2
K Verknüpfung von zB Tabellenzeilen mit Objekten. Java Basics - Anfänger-Themen 5
B Java "AND" Verknüpfung (ok) Java Basics - Anfänger-Themen 7
P Verknüpfung von Tabellen Java Basics - Anfänger-Themen 7
thE_29 visual basic verknüpfung in java Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben