Dezimal Binär?

bluebaby

Aktives Mitglied
Hallo ich hoffe es kann mir jemand helfen - folgende Aufgabe ist zu lösen

Erstelle eine Applikation, die eine Methode dezBin enthält, die 2 Parameter hat:
int zahl // enthält die ganze Zahl, die binär dargestellt wird
int laenge // enthält die Länge des Ergebnisses

Die Methode dezBin stellt den Wert des Parameters zahl binär dar und gibt ihn als String zurück.
Der Wert von zahl kann negativ, 0 oder größer 0 sein.

Die main-Methode testet die Methode dezBin.

Meine Lösung schaut so aus

Java:
import static javax.swing.JOptionPane.*;
/**
 * Write a description of class dezbin2 here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class dezbin2
{
    public static void main (String[] args){
      String ein=showInputDialog("Mit was wollen sie auffüllen?");
      int laenge=0;
    
      if(ein < laenge)
      System.out.println("negativ");
      if(ein==laenge)
      System.out.println("null");
      else 
      System.out.println("positiv");
      
      
      for (int ein=1;ein<laenge;ein++)
      ergebnis="ein"+laenge;
      return;
    }
}

aber irgendwie ist das so nicht richtig oder?
lg und danke
 

nrg

Top Contributor
Also ich seh bei dir noch überhaupt keine Umrechnung ins Binärsystem, bin aber auch grad zu faul zum Erklären :)

Java:
	public static String dezBin(int zahl, int laenge)
	{
		if (zahl == 0)
			return "0";
		else if (zahl < 0)
			return Integer.toString(zahl%2);
		else {
	    	StringBuilder s = new StringBuilder();
	    	int i = 0;
		    while (zahl > 0 && i++ < laenge){
		    	s.insert(0, zahl%2);
		        zahl = zahl / 2;
		    }
			return s.toString();
		}
	}

das gibt dir den binären Wert von zahl als String zurück und schneidet ihn ggf von ab, falls laenge < binäre Länge der zahl. Weiß net, ob du es bei einer größeren laenge von links mit nullen auffüllen willst.. Wenn ja, kannst du es ja erweitern.

EDIT beachten. Hatte nicht bedacht, dass bei 0 und negativen Zahlen auch ein Ergebnis kommen soll. Bin mir allerdings net ganz sicher, wie man nochmal negative Zahlen handelt. Google sagt teilweiße zahl%2 oder auch "nicht möglich". Kannst ja auch einen anderen String zurückgeben...
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
Bin mir allerdings net ganz sicher, wie man nochmal negative Zahlen handelt. Google sagt teilweiße zahl%2 oder auch "nicht möglich".

Zweierkomplement ? Wikipedia

Man könnte auch sagen: Berechne die (positive Zahl -1) und invertiere das Ergebnis :)

Könnte aufbauend auf eurem Programm dann so aussehen
Java:
else if (zahl < 0) {
	    String s = dezBin(zahl * -1 - 1, laenge);
	    StringBuilder s2 = new StringBuilder(laenge);
	    for (int i = 0; i < s.length(); i++) {
		s2.append(s.charAt(i) == '1' ? '0' : '1');
	    }
	    return s2.toString();
	}

das gibt dir den binären Wert von zahl als String zurück und schneidet ihn ggf von ab

Das Abschneiden würde ich hier lassen, denke genau dafür soll ja auch die Längenübergabe sein (und gerade beim Berechnen negativer Zahlen ist es schon schön wenn die Einsen stehen bleiben ;D
 
Zuletzt bearbeitet:

nrg

Top Contributor
Das Abschneiden würde ich hier lassen, denke genau dafür soll ja auch die Längenübergabe sein (und gerade beim Berechnen negativer Zahlen ist es schon schön wenn die Einsen stehen bleiben ;D

ja das habe ich net ganz verstanden, wie das gemeint ist :). hat für mich eigentlich keinen Sinn gemacht eine binäre Zahl abzuschneiden
 

hamstera

Mitglied
Hallo allerseits
Habe die selbe Aufgabe zu lösen, hänge aber an einer Stelle und komme nicht mehr weiter, und da ich neu bin wusste ich nicht sicher ob ich ein neues Them anfangen sollte oder lieber hier reinschreiben sollte. Ich habe mich jetzt einfach mal entschieden, das zu diesem Thema zu posten, tut mir leid falls es falsch ist.
Folgendes Problem:
Dez->Bin funktioniert einwandfrei bei positiven Zahlen oder 0, nicht jedoch bei negativen Zahlen. Da versagt es schon beim umrechnen in binär. Das Invertieren ist zwar in dem Programm auch schon drin, nur das addieren von 1 fehlt, aber es hakt schon allein bei der umrechnung: In der angeblich "binären" Zahl, kommen gleich mehrere - vor. Weiß leider nicht mehr weiter.
Hier mein Quellcode: (leider ziemlich lang für die Aufgabe)
Java:
public class DezBin2{
    public static void main(String[] args){
        System.out.println("Dezimal 83 ergibt binaer "+dezBin(83,8));
        System.out.println("Dezimal 0 ergibt binaer "+dezBin(0,8));
        System.out.println("Dezimal -83 ergibt binaer "+dezBin(-83,8));
    }
    
    private static String dezBin(int zahl, int laenge){
        String zeichenkette = "";
        if(zahl==0){                    //Wenn zahl==0
            for(int a=0;a<laenge;a++){
                zeichenkette="0"+zeichenkette;
            }
    }
    else{
        int i=zahl;
        String bin=""; 
         //Der Rechenrest wird berechnet, bis die Zahl 0 ergibt.
        while(i!=0){
            bin=i%2+bin; //Damit die Rechenreste in der richtigen Reihenfolge ausgegeben werden, also von hinten nach vorne.
            i=i/2;
        }
        //Falls noetig, ergaenzen der binaeren Zahl auf die gewuenschte laenge.
         for(int l=bin.length();l<laenge;l++){
                    bin="0"+bin;
                }
            if(zahl>0){                  //Wenn zahl>0
                zeichenkette=bin;
            }
           else {                         //Wenn zahl<0
                String bin2="";
                //Invertieren der binaeren Zahl
                for(int a=bin.length()-1; a>=0; a--){
                    if(bin.charAt(a)==0){
                        bin2="1"+bin2;
                    }
                    else if(bin.charAt(a)==1){
                       bin2="0"+bin2;
                    }
                } 
                zeichenkette=bin2;
            }
        }
            return zeichenkette;
    }
}
 

eRaaaa

Top Contributor
Ich hatte ja oben schon einen Tip gegeben wie man es auch anders lösen kann. Anstatt dann hinterher +1 zu addieren, kann man auch einfach von der Zahl das Vorzeichen weg denken und dann -1 rechnen (also anstatt -83 --> 83-1 = 82) und hinterher invertieren...ist vllt leichter wenn man das jetzt schon sonst alles hat.

Wäre dann in deinem Falle
Java:
	    } else { // Wenn zahl<0
		String bin2 = dezBin(zahl * -1 - 1, laenge);
		// Invertieren der binaeren Zahl
		String bin3 = "";
		for (int j = 0; j < bin2.length(); j++) {
		    if (bin2.charAt(j) == '1') {
			bin3 += '0';
		    } else {
			bin3 += '1';
		    }
		}
		return bin3;
	    }
 

hamstera

Mitglied
vielen dank erstmal für die schnelle hilfe, jedoch hab ich immernoch ein Problem:
Wenn ich den Quellcode nach dem Tipp verändere, so bekomme ich die Ausgabe: "Dezimal -83 ergibt binaer 00000011"
Eigentlich sollte es aber ja 10101101 sein soweit ich weiß..:S

Und ich hab leider immernoch das Problem das ich kene Ahnung hab warum bei mir der Divisionsrest eigenartigerweise negativ rauskommt..

Trotzdem Dankeschöön
 

eRaaaa

Top Contributor
?? Also ich habs eben getestet, wenn ich deinen Code nehme und die Zeilen 29-42 durch die von mir geposteten Zeilen ersetze, kommt da 10101101 raus(wobei man eig. noch erwähnen sollte, dass das die Zweierkomplement-Darstellung ist )
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
....;-( (also 1:1 kopieren sollte man doch schon können )

Java:
    private static String dezBin(int zahl, int laenge) {
	String zeichenkette = "";
	if (zahl == 0) { // Wenn zahl==0
	    for (int a = 0; a < laenge; a++) {
		zeichenkette = "0" + zeichenkette;
	    }
	} else {
	    int i = zahl;
	    String bin = "";
	    // Der Rechenrest wird berechnet, bis die Zahl 0 ergibt.
	    while (i != 0) {
		bin = i % 2 + bin; // Damit die Rechenreste in der richtigen
		// Reihenfolge ausgegeben werden, also von
		// hinten nach vorne.
		i = i / 2;
	    }
	    // Falls noetig, ergaenzen der binaeren Zahl auf die gewuenschte
	    // laenge.
	    for (int l = bin.length(); l < laenge; l++) {
		bin = "0" + bin;
	    }
	    if (zahl > 0) { // Wenn zahl>0
		zeichenkette = bin;
	    } else { // Wenn zahl<0
		String bin2 = dezBin(zahl * -1 - 1, laenge);
		// Invertieren der binaeren Zahl
		String bin3 = "";
		for (int j = 0; j < bin2.length(); j++) {
		    if (bin2.charAt(j) == '1') {
			bin3 += '0';
		    } else {
			bin3 += '1';
		    }
		}
		return bin3;
	    }
	}
	return zeichenkette;
    }

Hattet ihr denn eig. überhaupt schon das Zweierkomplement? (das war ja auch nur mal so in den Raum geworfen ;D )
 

hamstera

Mitglied
Sodala hab den fehler: fast schon traurig wenn man zu dumm ist zu bemerken, das das - vor der Zahl im Aufruf fehlt xD Tut mir leid das ichs ned früher gfundn hab..
Nur mich hat das mit dem return bin3; verwirrt. Wusste ned das es mehrere return's geben kann?
Und nein ich wüsst nicht wirklich was das is bzw ich habs jz gegoogelt und ich kenns ansich schon ein wenig aber wusst nicht das das Zweierkomplement heißt. Weiß also ungefähr was es is ^^

Naja jedenfalls vielen vielen daank für deine hilfee : D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Binär zu Dezimal Java Basics - Anfänger-Themen 16
J Dezimal in Binär (Array) Java Basics - Anfänger-Themen 2
Z Dezimal > Binär-Umrechnung Logikfehler? Java Basics - Anfänger-Themen 8
K Erste Schritte Dezimal in binär Java Basics - Anfänger-Themen 17
S Umwandlung Binär in Dezimal (ohne array etc.) Java Basics - Anfänger-Themen 6
V Binär in Dezimal Java Basics - Anfänger-Themen 4
S Umrechner (Dezimal, Hexadezimal und Binär) Java Basics - Anfänger-Themen 3
C dezimal in binär Java Basics - Anfänger-Themen 3
M Binär -> Dezimal Java Basics - Anfänger-Themen 11
N Umrechung Binär in Dezimal und Hexadezimal Java Basics - Anfänger-Themen 7
R Unicode-Wert in Binär und Dezimal umformen - kleines Problem Java Basics - Anfänger-Themen 1
C Hilfe bei Umrechnung von dezimal nach binär Java Basics - Anfänger-Themen 9
Ostkreuz Methoden Von Dezimal zu Hexadezimal Methode toHex Java Basics - Anfänger-Themen 2
S Algorithmus (reelle Zahl <65536 von dezimal zu dual) max. 10 Nachkommastellen Java Basics - Anfänger-Themen 4
JD_1998 Vorgegebene Methode erweitern um Hex -> Dezimal umzuwandeln Java Basics - Anfänger-Themen 1
P Dezimal zu Hexadezimalzahl Funktion Java Basics - Anfänger-Themen 5
D Dezimal zu Dual mit Rückgabewert Java Basics - Anfänger-Themen 39
G Dezimal zu Binärcode Programm Java Basics - Anfänger-Themen 9
D Umrechnung dezimal -> oktal | signed/unsigned? Java Basics - Anfänger-Themen 1
L Dezimal- zu Binärsystem Java Basics - Anfänger-Themen 4
P 32 Bit Binärzahl Umwandeln in Dezimal Java Basics - Anfänger-Themen 8
D römische Zahlen in Dezimal ausgeben Java Basics - Anfänger-Themen 9
dave253 IEEE-Norm in Dezimal Java Basics - Anfänger-Themen 12
W Umwandeln von Dezimal in Dual - Ausgabe incl. Rechenschritte Java Basics - Anfänger-Themen 11
H Erste Schritte Uhrzeit anzeigen in Minuten Dezimal Java Basics - Anfänger-Themen 8
F Erste Schritte Dezimal in Hexadezimal Java Basics - Anfänger-Themen 5
F Erste Schritte [GUI] Dual in Dezimal rechnen Java Basics - Anfänger-Themen 5
N Compiler-Fehler Dezimal to binary Java Basics - Anfänger-Themen 2
C Dezimal- und InputVerifier/FocusListener Probleme Java Basics - Anfänger-Themen 3
E Hexadezimal in Dezimal Java Basics - Anfänger-Themen 25
G Java Dezimal Zahlen Internazialisation Problem Java Basics - Anfänger-Themen 7
M Verständnisfrage zur Zahlenumwandlung (Dezimal-->Dual) Java Basics - Anfänger-Themen 25
U Dezimal zu Hexadezimal rekursive Funktion Java Basics - Anfänger-Themen 8
F dezimal zu hexadezimal Java Basics - Anfänger-Themen 14
V Tool zum Umrechnen Dezimal in Hex Java Basics - Anfänger-Themen 7
B Dezimal --> Hex Java Basics - Anfänger-Themen 3
M String(Binärzahl) in Dezimal umwandeln Java Basics - Anfänger-Themen 4
S Dual in Dezimal umwandeln? Java Basics - Anfänger-Themen 24
G Dezimal zu Hexadezimal Java Basics - Anfänger-Themen 2
S Dezimal- in Hexadezimalzahl umwandeln Java Basics - Anfänger-Themen 4
M wie hexadezimal in dezimal wandeln? Java Basics - Anfänger-Themen 16
O Dezimal in Dual...Arraygröße & Runden Java Basics - Anfänger-Themen 4
X Dezimal/-Hexcode in lebares format umwandeln Java Basics - Anfänger-Themen 4
S dezimal od. hexadezimal Java Basics - Anfänger-Themen 3
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
A Dezinal in Binär Recursiv Java Basics - Anfänger-Themen 6
W Dez-->Binär mit eigener bit Anzahl Erkennung. Java Basics - Anfänger-Themen 3
parrot Binär Addieren Java Basics - Anfänger-Themen 21
F Erste Schritte Binär zahle auf 8 stellen aufüllen Java Basics - Anfänger-Themen 2
Orkanson Long Binär darstellen 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
L String in Binär umwandeln Java Basics - Anfänger-Themen 4
ubaro1 Operatoren Der Tide Operator und positive Ganzzahlen in Binär Java Basics - Anfänger-Themen 1
T Erste Schritte Nachkommstellen in Binär mit Vekotoren Java Basics - Anfänger-Themen 3
M hexadezimal in binär mit Hilfe von Shift-Operatoren Java Basics - Anfänger-Themen 6
R Dezimalzahlen zu Binär Java Basics - Anfänger-Themen 3
B datentyp in binär umwandeln Java Basics - Anfänger-Themen 5
S binär string Java Basics - Anfänger-Themen 10
N Binär suchen: Java Basics - Anfänger-Themen 4
E Methoden umrechnung binär/oktal/hexadezimal in dezimalsystem (Methode) Java Basics - Anfänger-Themen 1
A double and add algorithmus für elliptische kurven/ integer binär darstellen Java Basics - Anfänger-Themen 14
K Binär Logisch Und, logisch Oder, subtrahieren Java Basics - Anfänger-Themen 8
G Binär in Byte speichern Java Basics - Anfänger-Themen 7
eLogic .txt Testdatei to Binär Java Basics - Anfänger-Themen 2
F Hex zu Binär Java Basics - Anfänger-Themen 7
Shanks Problem bei Binär überprüfung Java Basics - Anfänger-Themen 3
S Array Daten in Binär Datei schreiben/lesen Java Basics - Anfänger-Themen 11
H Java Double in Binär, Hex oder Octalzahl wandeln Java Basics - Anfänger-Themen 3
JeromeM90 (Brauche Hilfe) Binär- in Dezimalzahlkonverter Java Basics - Anfänger-Themen 8
N Binär Datei kopieren Java Basics - Anfänger-Themen 2
T longs binär verarbeiten Java Basics - Anfänger-Themen 4
G Objekte binär speichern und später wieder einlesen? Java Basics - Anfänger-Themen 7
G char[] binär schreiben? Java Basics - Anfänger-Themen 2
V Binär + Hexadezimal Java Basics - Anfänger-Themen 3
V String mit Hexadezimalzahlen in Binär umwandeln Java Basics - Anfänger-Themen 2
A Binär-Datei versenden übers Internet Java Basics - Anfänger-Themen 2
R String nach Binär-Form Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben