Umwandeln von Dezimal in Dual - Ausgabe incl. Rechenschritte

WonderWoman

Mitglied
Huhu, und noch ein Problem von mir ;)

Ich bearbeite grad folgende Aufgabe.

Ausgabe der Binärdarstellung einer Ganzzahl sowie die Rechnungsschritte. Für die Zahl 14.

Die Ausgabe soll so aussehen:

Java:
14 / 2 = 7 R 0
7 / 2 = 3 R 1
3 / 2 = 1 R 1
1 / 2 = 0 R 1

Die Zahl 14 in Binärdarstellung ist 1110

Ich hab schon was dazu gefunden, also die Methode zum Umrechnen eben. Allerdings bekomm ich das nicht mit der Augabe der Rechenschritte und Modulo Berechnungen hin. Zumindest ist meine Ausgabe Quatsch.

Das hab ich bisher da stehen:

Java:
public class dezdual {

	public static void main(String[] args) {

		int zahl_int = 14;
		String ausgabe = "";
		int x = 1;
		int y = 0;
		while (zahl_int != 0) {
			if (zahl_int % 2 == 0) {
				ausgabe = y + ausgabe;
				System.out.print(zahl_int + "/" + "2 " + "=");
			} else {
				ausgabe = x + ausgabe;
			}
			zahl_int = zahl_int / 2;
			System.out.println(zahl_int);
		}
		System.out.print("Die Zahl 14 ist in der Binärdarstellung: " + ausgabe);
		
	
	}

}

Vielleicht kann mir ja jmd helfen, gerne auch im Skype (WonderWoman869) um sich die Lösung gemeinsam zu erarbeiten.
 
Zuletzt bearbeitet:
L

lenuyx

Gast
in dieser Aufgabe würde sich ein Array super machen.
einfach nach jeder Modulo Operation den Wert im Array speichern.
pass auf wenn du es ausgibst das die Reihenfolge richtig ist.
 

WonderWoman

Mitglied
Okay dann probier ich das morgen mal mit Arrays. Die geraten bei mir immer bisschen in Vergessenheit, weil ich sie glaub noch net 100% verstanden hab. Ich tu mich damit sehr schwer.
Danke aber fuer den Tip.
Gute Nacht :)
 
L

lenuyx

Gast
Lass dir dann ein Array nochmal richtig ausführlich erklären. Es ist sehr wichtig. ;)
 
Zuletzt bearbeitet von einem Moderator:

Big-Taylor

Mitglied
Also ich hab mir mal Gedanken darüber gemacht und so dachte ich mir, dass die Klasse aus drei Teilen bestehen müsste. Die Idee mit den Arrays zum speichern der Werte ist auch nicht schlecht.
Zum ersten müsstest du dir überlegen, ob die Ausgabe für beliebige Zahlen gelten soll. Das würde nämlich Arrays verschiedener Größe verlangen.
Ich hab mich mal rangesetzt, um die Aufgabe zu lösen(werd den Code unten posten).
Leider hab ich keine sehr elegante Lösung gefunden. Zumindest besteht sie bei mir aus drei Teilen und ich hab einen Haufen temporärer Variablen benutzen müssen.
Im ersten hab ich mittels Modulo die Werte ermittelt und gab sie wie folgt aus:
Java:
14 / 2 = 7 R 0
7 / 2 = 3 R 1
3 / 2 = 1 R 1
1 / 2 = 0 R 1

Im zweiten durchlief ich die Schleife nochmals, um die Werte in ein Array zu speichern. Um die Arraygröße zu kennen, brauchst du einen Zähler im ersten Teil, der den Wert dann übergibt.

Im dritten Teil hab ich dann die Werte des Arrays wieder ausgegeben, dafür bietet sich 'ne for-Schleife an. Musst halt wissen, in welcher Reihenfolge du die Werte in den Array schreibst und wieder ausliest.
Also hier mal meine Version. Bevor du dir diese anschaust, probier es aber lieber selbst.
Und da ich hier schon mal einen fehlerhaften Code gepostet hab, übernehm ich
keinerlei Garantie :pfeif:


Java:
class Test{
	public static void main(String[] args) {

		int dezi = 8;  // Die umzuwandelnde Dezimalzahl

		int count = 0;
		int temp3= dezi;
		int temp4= dezi;
		

// Teil 1:		
		while(dezi != 0){
			int temp1 = dezi % 2;
			int temp2 = dezi / 2;
			System.out.println(dezi + " / 2 = " + temp2 + " R " + temp1);
			dezi = temp2;
			count++;
			//System.out.print(count);
		}
		
		
// Teil 2:		
		int temp5 = count;
		int[] ablage = new int[count];
		
		while(temp3 != 0){
			int temp1 = temp3 % 2;
			int temp2 = temp3 / 2;
			ablage[count-1] = temp1;
			temp3 = temp2;
			count--;
		}
		
		
// Teil 3:		
		System.out.print("Die Loesung ist: ");
		for(int n = 0; n <temp5; n++){
			System.out.print(ablage[n]);
		}
	}

}


P.S. Schreib mal bitte die Klassennamen in Zukunft beginnend mit einem Großbuchstaben.
 
Zuletzt bearbeitet:

WonderWoman

Mitglied
Danke dir, ich find die Idee ziemlich einleuchtend, das in drei Teile zu teilen. Ich werds jetzt gleich nochmal selber versuchen bevor ich deine Lösung richtig anschau.
Lieben Gruss :)
 

kaoZ

Top Contributor
Ich hätte ja eine Rekursive Lösung mit
Code:
Stringbuilder
gewählt ;)

hier mal ein beispiel mit Rückgabewert :

Java:
package tests;

import java.util.Scanner;

public class Converter {
	
	Scanner sc;
	StringBuilder builder;
	
	public Converter() {
		
	sc = new Scanner(System.in);
	builder = new StringBuilder();
	
	builder.append(convert(Integer.parseInt(sc.nextLine())));
	
	System.out.println(builder.reverse());
		
	}

	public int convert(int value){

		if(value > 1){
			builder.append(value % 2);
			return convert(value / 2);
		}
		else{
			return 1;
		}
	}
	
	public static void main(String[] args) {
		new Converter();
	}
}
 
Zuletzt bearbeitet:

WonderWoman

Mitglied
Die Aufgabe nervt mich echt an :D Also ich hab jetzt mal die Lösung von Big-Taylor reingezogen und wie ich glaub auch verstanden. Sieht nur relativ wirr aus durch die ganzen temp. Variablen.

Hab beschlossen die Aufgabe jetzt mal zu überspringen und sie mir zu einem späteren Zeitpunkt nochmal reinzuziehen.

Leider kann ich auch mit dem Ansatz von kaoZ nicht so viel Anfangen, da ich noch nie was von Stringbuilder gehört hab, glaub ich zumindest ;)

Danke aber fuer eure Hilfe :)
 

WonderWoman

Mitglied
So n Freund hat mir grad noch die einfachste und wie ich find nachvollziebarste Lösung zu der Aufgabe gegeben.
Ich dacht mir vielleicht interessierts iwann noch jemanden deshalb hier seine Lösung:

Java:
public class Binaer {


	public static void main(String[] args) {

		int dezi = 46; // Die umzuwandelnde Dezimalzahl
		String erg = "";

		while (dezi != 0) {
			int rest = dezi % 2;
			int div = dezi / 2;

			System.out.println(dezi + " / 2 = " + div + " R " + rest);

			erg = rest + erg; // Reihenfolge hier wichtig

			dezi = div;
		}

		System.out.println("Ergebnis = " + erg);

	}

}

Gruss :)
 

rme

Top Contributor
Dabei war deine doch auch fast richtig.. hättest du dich mal nicht von Arrays und so ablenken lassen ;) Hier eine ganz kleine Modifikation deiner Lösung, die nun richtig sein könnte:

Java:
public class dezdual {

    public static void main(String[] args) {

        int zahl_int = 14;
        String ausgabe = "";
        while (zahl_int != 0) {
            if (zahl_int % 2 == 0) {
                ausgabe = "0" + ausgabe;
                System.out.println(zahl_int + "/ 2 = " + zahl_int / 2 + " R 0");
            } else {
                ausgabe = "1" + ausgabe;
                System.out.println(zahl_int + "/ 2 = " + zahl_int / 2 + " R 1");
            }
            zahl_int = zahl_int / 2;
        }
        System.out.print("Die Zahl 14 ist in der Binärdarstellung: " + ausgabe);

    }

}

Falls du eine Erklärung möchtest, warum deine Lösung nicht funktioniert hat und warum es jetzt funktioniert, meld dich einfach nochmal, dann erklär ich's dir ausführlicher :)
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
StringBuilder ähnlich wie auch StringBuffer, ist einfach eine Möglichkeit Strings (die ja immutable, also unveränderlich sind) zu manipulieren, ähnlich einem "Puffer", damit kann man z.B beliebige Buchstaben ersetzen , oder halt einfach die "gepufferten" Buchstaben rückwärts ausgeben. :)

nehmen wir z.B folgendes an , du möchtest Dezimal 20 in eine Binäre Zahl umrechnen

Java:
20 mod 2 = 10 rest 0
10 mod 2 = 05 rest 0
05 mod 2 = 02 rest 1
02 mod 2 = 01 rest 0
01 mod 2 = 00 rest 1

würde man das ganze jetzt über
Code:
System.out.println();
ausgeben, würde dies zu folgender Ausgabe führen
Code:
00101
dies wäre ja bekanntlich binär allerdings
Code:
5
und nicht
Code:
20
, dies liegt daran das die reihenfolge umgekehrt ausgegeben werden muss, da immer der letzte errechnete Wert an erster Stelle steht, durch die
Code:
.append()
Methode haben wir jetzt jeweils den Restwert in unseren "puffer" geschrieben,

durch ebend die Möglichkeit der Stringmanipulation des StringBuilders und dessen
Code:
.reverse()
Methode können wir die Ausgabe umkehren , was zu folgender Ausgabe führt

Code:
10100
dies wäre äquivalent zu Dezimal 20, da
Code:
(1x2^4) + (1x2^2) = 16 + 4 = 20

man könnte jetzt die Ausgabe durch eine weitere Schleife sogar noch dazu bewegen dies jeweils auf 8 bit aufzufüllen, aber das war hier nicht gefragt , deshalb denke ich ist es auch nicht weiter wichtig
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Dual in Dezimal umwandeln? Java Basics - Anfänger-Themen 24
P 32 Bit Binärzahl Umwandeln in Dezimal Java Basics - Anfänger-Themen 8
M String(Binärzahl) in Dezimal umwandeln Java Basics - Anfänger-Themen 4
S Dezimal- in Hexadezimalzahl umwandeln Java Basics - Anfänger-Themen 4
X Dezimal/-Hexcode in lebares format umwandeln Java Basics - Anfänger-Themen 4
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
R int in Ascci umwandeln Java Basics - Anfänger-Themen 7
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
S JAR zu EXE umwandeln Java Basics - Anfänger-Themen 22
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
K In andere Zahlensysteme umwandeln, wann klappt immer der Trick mit log? Java Basics - Anfänger-Themen 6
E PDF Datei im xfdf-Datei umwandeln und auf dem Laufwerk ablegen Java Basics - Anfänger-Themen 0
Naxon89 Input/Output Ein PDF in einem BLOB umwandeln um ihn dann als PDF wieder anzuzeigen Java Basics - Anfänger-Themen 3
C Rekursive Methode in Interative Methode umwandeln Java Basics - Anfänger-Themen 17
J Dezimalzahl in Bruch Umwandeln und Kürzen Java Basics - Anfänger-Themen 8
C Taschenrechner (switch) in Taschenrechner mit Methoden umwandeln Java Basics - Anfänger-Themen 115
J RSA Verschlüsselung Testen / byte[] in Objekt umwandeln Java Basics - Anfänger-Themen 1
S String umwandeln Java Basics - Anfänger-Themen 6
F Character umwandeln als Double Werte Java Basics - Anfänger-Themen 8
K String in Integer umwandeln Java Basics - Anfänger-Themen 4
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
O von Basis 10 in Basis x umwandeln Java Basics - Anfänger-Themen 5
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
L String in Integer umwandeln Java Basics - Anfänger-Themen 3
I JSON Datei in Array umwandeln Java Basics - Anfänger-Themen 1
W Dezimalzahl in Binär umwandeln - Was sollte ich an meinem Programm verbessern? Java Basics - Anfänger-Themen 5
S \n nicht in Zeilenumbruch umwandeln Java Basics - Anfänger-Themen 5
W Dezimalzahlen in Binärzahl umwandeln. Wie möglich ? Java Basics - Anfänger-Themen 9
Vince42 NIO File Tree in XML umwandeln Java Basics - Anfänger-Themen 10
R Kompletten String umwandeln in Integer Java Basics - Anfänger-Themen 10
H 32-Bit Zahl (Integer) in eine IPv4 Adresse umwandeln? Java Basics - Anfänger-Themen 2
Orkanson Datentypen Integer in String umwandeln/hinzufügen Java Basics - Anfänger-Themen 3
geekex Double zu String umwandeln in einer Methode Java Basics - Anfänger-Themen 28
MiMa String in Gross und Kleinbuchstaben umwandeln Java Basics - Anfänger-Themen 10
H JCalendar in String umwandeln Java Basics - Anfänger-Themen 9
P Wie kann ich mein Programm zu einer App umwandeln? Java Basics - Anfänger-Themen 4
M Beliebigen Text in *** umwandeln Java Basics - Anfänger-Themen 15
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
U RegEx alle Kommas bei den Zahlen in Punkt umwandeln Java Basics - Anfänger-Themen 3
E Von Double zu Long umwandeln Java Basics - Anfänger-Themen 9
L String in Binär umwandeln Java Basics - Anfänger-Themen 4
G .java in .jar umwandeln Eclipse Java Basics - Anfänger-Themen 12
W String auf char[] umwandeln Java Basics - Anfänger-Themen 3
K Double Wert runden und in Int umwandeln Java Basics - Anfänger-Themen 7
K For Schleife in While Schleife umwandeln Java Basics - Anfänger-Themen 5
C Array in String umwandeln Java Basics - Anfänger-Themen 5
K Methoden Zahlensysteme umwandeln mittels Rekursion Java Basics - Anfänger-Themen 5
W Wie kann man diesen Code in einen Code umwandeln, der folgendes können sollte? Java Basics - Anfänger-Themen 1
I String zu File umwandeln Java Basics - Anfänger-Themen 2
N Collections String in HashMap umwandeln Java Basics - Anfänger-Themen 3
G tga Datei lesen und in eine matrix umwandeln Java Basics - Anfänger-Themen 1
G Bilddaten in Matrix umwandeln Java Basics - Anfänger-Themen 1
L Java CMD Console in String umwandeln? Java Basics - Anfänger-Themen 2
D String zu int umwandeln Java Basics - Anfänger-Themen 2
D Problem beim umwandeln eines Strings in eine Dzezimalzahl Java Basics - Anfänger-Themen 6
K Wie .java in .jar umwandeln? Java Basics - Anfänger-Themen 5
N Bestimmte Zeichen eines Strings umwandeln Java Basics - Anfänger-Themen 4
W String Array in Int umwandeln um auf Zahl zu überprüfen Java Basics - Anfänger-Themen 4
G double in float umwandeln Java Basics - Anfänger-Themen 2
M csv in xlsx umwandeln Java Basics - Anfänger-Themen 7
F Char in Long umwandeln? Java Basics - Anfänger-Themen 2
D String in FileInputStream umwandeln Java Basics - Anfänger-Themen 2
J Mit Eclipse PLZ in Koordinaten umwandeln und ausgeben Java Basics - Anfänger-Themen 3
A Erste Schritte Buchstaben in zahlen umwandeln Java Basics - Anfänger-Themen 4
T opengl Dreick in einen Würfel umwandeln Java Basics - Anfänger-Themen 0
S Groß bzw. Klein Buchstaben umwandeln (gemischt) Java Basics - Anfänger-Themen 1
D Methode mit mehren Rekursiven aufrufen in Methode mit einem Rekursiven Aufruf umwandeln! Java Basics - Anfänger-Themen 1
V String in Byte umwandeln Java Basics - Anfänger-Themen 11
S Element von List<E> in String umwandeln Java Basics - Anfänger-Themen 3
N Unsymmetrisches mehrdimensionales Array in eindimensionales umwandeln Java Basics - Anfänger-Themen 2
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
AssELAss String in Datum umwandeln Java Basics - Anfänger-Themen 4
J array in String umwandeln Java Basics - Anfänger-Themen 1
J array in String umwandeln Java Basics - Anfänger-Themen 3
S Klasse properties - Probleme beim umwandeln Java Basics - Anfänger-Themen 3
1 Binärdarstellung (als String) in Dezimalzahl umwandeln Java Basics - Anfänger-Themen 8
J subStrings zu int Array umwandeln? Java Basics - Anfänger-Themen 19
K JTextField auslesen, in int umwandeln und in einer anderen Klasse als Zähler verwenden Java Basics - Anfänger-Themen 3
C '.java' in '.exe' umwandeln. Java Basics - Anfänger-Themen 2
T Operatoren Float in byte umwandeln Java Basics - Anfänger-Themen 3
P Datum umwandeln Java Basics - Anfänger-Themen 5
P [B@6a435f in normalen Zahlen umwandeln, wie? Java Basics - Anfänger-Themen 14
M Input/Output Viele short aus Datei lesen und von Little Endian zu Big Endian umwandeln Java Basics - Anfänger-Themen 12
J C++ Bitmanipulations-Programm in Java umwandeln Java Basics - Anfänger-Themen 10
B Zahl Basis 10 in DualDezimal 16bit umwandeln Java Basics - Anfänger-Themen 8
X Datentypen Int oder String in Bits/Bytes umwandeln Java Basics - Anfänger-Themen 10
W Datentypen String in Quellcode umwandeln Java Basics - Anfänger-Themen 25
J int mit führenden Nullen in String umwandeln Java Basics - Anfänger-Themen 5
B datentyp in binär umwandeln Java Basics - Anfänger-Themen 5
A String in Double umwandeln mit Tests Java Basics - Anfänger-Themen 3
S ArrayList<Byte> in String umwandeln Java Basics - Anfänger-Themen 5
S Datumsstring in datetime umwandeln Java Basics - Anfänger-Themen 2
T int als 100% umwandeln? Java Basics - Anfänger-Themen 7
G Fehler beim Umwandeln eines Strings in int Java Basics - Anfänger-Themen 8
M String in Datum umwandeln mit SimpleDateFormat Java Basics - Anfänger-Themen 3
A String(Ascii ) in String umwandeln Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben