DezimalZuBinär - Erklärung der Vorgehensweise des Programms

Airgin

Mitglied
Hallo liebe Mitforennutzer,

ich bin im ersten Semester und uns wurde folgende Klasse aufgezeigt.
Diese sollen wir nun versuchen zu verstehen (was passiert in den jeweiligen Schritten) und
falls möglich verbessern.
Ich wäre schon sehr dankbar für eine detaillierte Erklärung zu den Geschehnissen der Schritte.
Da ich wirklich noch Anfänger bin, würde ich mich über simple Erklärungen freuen :oops:

Vielen Dank im Vorraus.

Hier der Code:
Java:
import javax.swing.*;

public class DezToBin {
	public static void main(String[] args) {
		long dezimalzahl;

		String eingabe = JOptionPane.showInputDialog("Zahl eingeben!");
		dezimalzahl = Integer.parseInt(eingabe);

		System.out.print("Die groesste 1-Bit-Gruppe von " + dezimalzahl
				+ " (Binaer:");
		doDeztobin(dezimalzahl);
		System.out.print(") hat " + groupSize(dezimalzahl) + " Bit(s)\n\n");
	}

	static void doDeztobin(long z) {			// long z = long dezimahlzahl 
		long b = 1;

		if (z == 0) {
			System.out.print("0");
		return;									// return, damit nicht weiter gelaufen wird in der Methode (wie "break" bei switch)
		}

		while (b <= z)
			b <<= 1;							// <<= 	"Zuweisung mit Linksverschiebung"   b = << 1??

		b >>= 1;								// >>= 	"Zuweisung mit Rechtsverschiebung"   b = >> 1??
		System.out.println(b);
		
		while (b != 0) {
			if ((z & b) != 0)
				System.out.print("1");
			else
				System.out.print("0");
			b >>= 1;
		}
	}

	static int groupSize(long z) {
		long b = 1;
		int max = 0, akt = 0;

		while (b <= z) {
			if ((z & b) != 0) {
				akt++;
			} else {
				if (akt > max)
					max = akt;
				akt = 0;
			}
			b <<= 1;
		}

		if (akt > max)
			max = akt;

		return (max);
	} 

}
 
Zuletzt bearbeitet:

DazzleFlash

Mitglied
Sinnvoller wäre das ganze, wenn du es mal selbst analysieren würdest und uns dann deine Ergebnisse mitteilst und wir dir dann sagen, was daran richtig oder eben falsch ist und dich ggf verbessern ;)
Sonst hat das ganze nämlich wenig Nutzen für dich
 

Airgin

Mitglied
Ok, ich grenze mal die Bereiche ein, die ich nicht verstehe:

[Java]System.out.print("Die groesste 1-Bit-Gruppe von " + dezimalzahl
+ " (Binaer:");
doDeztobin(dezimalzahl);
System.out.print(") hat " + groupSize(dezimalzahl) + " Bit(s)\n\n");[Java]


[Java]System.out.print("0");
return; // return, damit nicht weiter gelaufen wird in der Methode (wie "break" bei switch)
}

while (b <= z)
b <<= 1; // <<= "Zuweisung mit Linksverschiebung" b = << 1??

b >>= 1; // >>= "Zuweisung mit Rechtsverschiebung" b = >> 1??
System.out.println(b);

while (b != 0) {
if ((z & b) != 0)
System.out.print("1");
else
System.out.print("0");
b >>= 1;
}
}[Java]

Überhaupt verstehe ich diese Zuweisungen mit Verschiebungen nicht.
und was bei System.out.print passiert
und wie es sein kann dass ich bei einer void methode ein return einbringen kann
 

Ikaron

Bekanntes Mitglied
Ok, ich grenze mal die Bereiche ein, die ich nicht verstehe:

[Java]System.out.print("Die groesste 1-Bit-Gruppe von " + dezimalzahl
+ " (Binaer:");
doDeztobin(dezimalzahl);
System.out.print(") hat " + groupSize(dezimalzahl) + " Bit(s)\n\n");[Java]


[Java]System.out.print("0");
return; // return, damit nicht weiter gelaufen wird in der Methode (wie "break" bei switch)
}

while (b <= z)
b <<= 1; // <<= "Zuweisung mit Linksverschiebung" b = << 1??

b >>= 1; // >>= "Zuweisung mit Rechtsverschiebung" b = >> 1??
System.out.println(b);

while (b != 0) {
if ((z & b) != 0)
System.out.print("1");
else
System.out.print("0");
b >>= 1;
}
}[/Java]

Überhaupt verstehe ich diese Zuweisungen mit Verschiebungen nicht.
und was bei System.out.print passiert
und wie es sein kann dass ich bei einer void methode ein return einbringen kann

Nun ja, eine Verschiebung um 1 verschiebt - wie der Name schon sagt - alle Bits um 1. Das ist gleichbedeutend mit mal / durch 2. z.B.
[c]5 << 2 ist das selbe wie (5 * 2) * 2 = 20[/c] da:
[c]0b101 << 2 = 0b10100 = 20[/c]
In die andere Richtung entspricht das einer Division mit Abrundung:
[c]11 >> 1 ist das selbe wie (int) (11 / 2) = 5[/c] da:
[c]0b1011 >> 1 = 0b101 = 5[/c]
Merke, dass das letzte Bit einfach weg fällt - Es macht keinen Unterschied, ob die Zahl 2n oder 2n + 1 ist, das Ergebnis ist das Gleiche (für n element IN)

System.out.print(...); Gibt einfach nur einen String auf der Konsole aus, ohne in die nächste Zeile zu springen. Vergleichbar mit:
String konsolentext = "...";
konsolentext = konsolentext + "Anhang";

"Return" heißt ja nur "Komm wieder zurück" - Da muss nicht zwingend ein Wert dabei sein. Void heißt nur, dass man keine Rückgabe erwartet, im Gegensatz zu:
[c]return 1;[/c]
[c]return Math.max(x * x, y * y);[/c]
einfach nur:
[c]return; // <- Keine Rückgabe, nur der Aufruf, die Methode zu beenden.[/c]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
JaZuDemNo Code Erklärung Java Basics - Anfänger-Themen 3
M Erklärung von Ausnahmebehandlung in Methoden Java Basics - Anfänger-Themen 13
S Erklärung BufferedReader und InputStreamReader Java Basics - Anfänger-Themen 4
S Erklärung zur Methode und array Java Basics - Anfänger-Themen 12
I Array in umgekehrter Reihenfolge - Erklärung - Java Basics - Anfänger-Themen 3
KogoroMori21 Erklärung zum Ternären Operator Java Basics - Anfänger-Themen 4
I Erklärung zum Java Code Java Basics - Anfänger-Themen 2
D Erklärung Java Basics - Anfänger-Themen 3
A Erklärung Programm zur Kreisberechnung Java Basics - Anfänger-Themen 43
S Bitweise Operatoren" >>>",">>","<<" erklärung Java Basics - Anfänger-Themen 5
D Erklärung eines Satzes Java Basics - Anfänger-Themen 0
M Erklärung: Int IndexOf (String s) Java Basics - Anfänger-Themen 3
C Methoden erklärung Java Basics - Anfänger-Themen 8
W FileReader - Bitte um Erklärung Java Basics - Anfänger-Themen 7
E Erste Schritte Gute Erklärung zu Objekten / Klassen / Methoden / Sichtbarkeiten auf Deutsch Java Basics - Anfänger-Themen 3
D Erklärung static boolean Java Basics - Anfänger-Themen 6
J Bitte um Erklärung Java Basics - Anfänger-Themen 4
C Polymorphie - Erklärung bitte Java Basics - Anfänger-Themen 5
O Über Map laufen Erklärung Java Basics - Anfänger-Themen 4
H Primzahltest : Erklärung zum Code Java Basics - Anfänger-Themen 2
M Erklärung Code Mergesort Bitte Java Basics - Anfänger-Themen 3
N While Schleife Erklärung Bitte Java Basics - Anfänger-Themen 3
B Benötige Erklärung für Lösungsansatz Java Basics - Anfänger-Themen 0
M web.xml Abschnitt Erklärung Java Basics - Anfänger-Themen 2
Z Fibonacci rekursiv meine Erklärung stimmt so? Java Basics - Anfänger-Themen 2
A erklärung von code Java Basics - Anfänger-Themen 4
Z Fibonacci Array Erklärung Java Basics - Anfänger-Themen 5
K Erste Schritte Datenbank SQL erklärung Java Basics - Anfänger-Themen 15
H Methoden Bitte um Erklärung der askString-Methode Java Basics - Anfänger-Themen 15
G Erklärung .next Java Basics - Anfänger-Themen 4
D Erklärung Kalenderwoche Java Basics - Anfänger-Themen 14
T Erklärung zur Methode, Modulator Java Basics - Anfänger-Themen 3
V Objekte/Klassen erstellen - Erklärung anhand Beispiel Java Basics - Anfänger-Themen 4
P Methoden Erklärung wie ich eine spezielle Methode richtig anwende Java Basics - Anfänger-Themen 9
S Threads Erklärung ReentrantLock Java Basics - Anfänger-Themen 6
B Kleine Erklärung zu einer Codezeile benötigt Java Basics - Anfänger-Themen 5
G Bitte um Erklärung dieser einer Zeile Java Basics - Anfänger-Themen 5
R Interpretation/Erklärung main Java Basics - Anfänger-Themen 4
Helgon Polymorphie Generischer Methodenkopf - Erklärung Java Basics - Anfänger-Themen 3
W OOP Konstruktoren Erklärung Java Basics - Anfänger-Themen 14
E Quellcode Erklärung Java Basics - Anfänger-Themen 8
R Vererbung Bitte um Erklärung - Instanzvariablen Java Basics - Anfänger-Themen 8
A Java Erklärung? Java Basics - Anfänger-Themen 4
D Beans Erklärung Java Basics - Anfänger-Themen 11
Q Klausur aufgabe Erklärung Java Basics - Anfänger-Themen 12
G Bitte um Erklärung Java Basics - Anfänger-Themen 9
O Erklärung für Pattern Java Basics - Anfänger-Themen 5
K gute erklärung Java Basics - Anfänger-Themen 5
Screen Erklärung von der Umwandlung von .class in .jar o. .exe ! Java Basics - Anfänger-Themen 5
Spin Taschenrechner - Erklärung Java Basics - Anfänger-Themen 9
S Code-Erklärung Java Basics - Anfänger-Themen 4
J Bitte um Erklärung für einen Java-Ausdruck Java Basics - Anfänger-Themen 8
M enhanced for - erklärung Java Basics - Anfänger-Themen 3
K Erklärung der Syntax Java Basics - Anfänger-Themen 6
R Erklärung bitte Java Basics - Anfänger-Themen 3
G Erklärung for-Schleife bei Strings Java Basics - Anfänger-Themen 4
tobiasbeil Fehler array initialisierung. Nur erklärung bitte. Java Basics - Anfänger-Themen 2
W Programm erklärung Java Basics - Anfänger-Themen 7
F Threads - Erklärung und Beispielprogramm Java Basics - Anfänger-Themen 4
D Erklärung für eine Abfrage. Java Basics - Anfänger-Themen 9
D Eine Erklärung für eine 3D-Schleife bitte. :) Java Basics - Anfänger-Themen 4
B [suche erklärung] - sicherheit beim login Java Basics - Anfänger-Themen 3
D Vorgehensweise Projektentwurf Java Basics - Anfänger-Themen 32
W Thread Aufgabe - Vorgehensweise Java Basics - Anfänger-Themen 8
N Objektorientierte Programmierung: Erben von 2 Klassen - wie ist korrekte Vorgehensweise? Java Basics - Anfänger-Themen 16
A Vorgehensweise bei einem Java Projekt Java Basics - Anfänger-Themen 3
B Vorgehensweise an Methode übergeben? Java Basics - Anfänger-Themen 5
P Brauche Hilfe zur Vorgehensweise Java Basics - Anfänger-Themen 3
S vorgehensweise beim auslesen von Objekte Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben