Dezimalzahl in eine Binärzahl umrechnen

peterp

Mitglied
Hallo könnte mit einer helfer wie ich da am besten Anfangen kann.🙁
Ausgabe der Binärdarstellung einer Ganzzahl sowie die Rechnungsschritte.
gewünschte Ausgabe des Programms für Beispielwert 42:
Wichtig ist die Methode Integer.toBinaryString()
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
 
Kann mir einer sagen was ich falsch programmiert habe ?


Java:
int b =InputTools.readInteger("zahl eingeben");
        
            
            int c = b%2;
            int wert = b/2 ;
            int wer=wert/2;
            int we=wer/2;
            int w=we/2;
    
            

            if (wert%2==0  | wer%2==0 | c %2==0 ){
                System.out.println(b+"R"+"0");
                System.out.println(wert+"R"+"0");
                System.out.println(wer+"R"+"0");
                
            
            }
            
             else
            System.out.println(b+"R"+"1");
            System.out.println(wert+"R"+"1");
            System.out.println(wer+"R"+"1");
    

            
             System.out.println(Integer.toBinaryString(b));

            
}}

Code:
Konsole:zahl eingeben12
12R0
6R0
3R0
6R1
3R1
 
Zuletzt bearbeitet von einem Moderator:
Kann mir einer sagen was ich falsch programmiert habe ?
Java:
            if (wert%2==0  | wer%2==0 | c %2==0 ){
              ......
            }
 
             else
            System.out.println(b+"R"+"1");
            System.out.println(wert+"R"+"1");
            System.out.println(wer+"R"+"1");
    
             System.out.println(Integer.toBinaryString(b));   
}}

1.) Ein logische ODER wird in Java mit "||" geschrieben.
2.) Wenn du bei einem if bzw. else keine Klammern machst wird nur das 1. darauf folgende Statement beachtet. Sprich dein "else" zieht nur bei einem der "System.out.println", die anderen beiden werden immer ausgegeben.

Allgemein ist dein Code logisch leider völlig falsch.
Du hast doch dein Beispiel mit der Zahl 14. Wie würdest du es am Papier machen (Schritt für Schritt)?
 
Ich würde es so machen
14 / 2 = 7 R 0
7 / 2 = 3 R 1
3 / 2 = 1 R 1
1 / 2 = 0 R 1
ich hab es mit modulo versucht klappt aber leider nicht
 
ich möchte das die Konsole mir die einzelnen Rechenschritte ausgibt. Ich aber nicht weiß wie ich das hinschreiben kann
.ist diese Ansatz richtig oder kann man das einfacher hinschreiben?
int b =InputTools.readInteger("zahl eingeben");

int wert = b/2 ;
int wer=wert/2;
int we=wer/2;
int w=we/2;

if (wert%2==0 || wer%2==0 || we%2==0|| w%2==0)

System.out.println("wert"+"R"+"0");

System.out.println(Integer.toBinaryString(b));
}
 

Nimm dir einfach mal diese Zeile her:
1.) Ergebnis der Division berechnen => 14 / 2 = 7
2.) Rest der Division berechnen => ? = 0

Was musst du statt dem Fragezeichen einsetzen? Die sollte ja eigentlich ein variable Wert sein, kann man also durch eine lokale Variable ersetzen.
Das Ergebnis der Division musst du zwischenspeichern da du damit ja weiterrechnen musst.
Schon hast du 2 Anweisungen welche du nur wiederholen musst (Schleife) bis das Ergebnis der Division gleich 0 ist.

EDIT: Dein Ansatz bisher ist nicht wirklich richtig. Vor allem da du damit nur Binärzahlen mit 4 Stellen berechnen kannst. Probiere mal 385628 umzurechnen mit deinem Code 😉
 
Zuletzt bearbeitet:
das 1. hab ich ja int wert = zahl/2 ;
Java:
for (wert=zahl; wert<zahl; wert/2)
System.out.println.(wert);
 if (wert/2==0){
return}
meinst du das etwas so?
 
Zuletzt bearbeitet von einem Moderator:
Bitte verwende für Java Code die
Java:
-Tags!

Probiere diesen Code doch einfach aus, das geht schneller und einfacher als hier auf eine Antwort zu warten.
Nein leider wird dieser Code nicht funktionieren. Es fehlen "{}" und "println.(wert)";" enthält ebenfalls einen Fehler.
Es fehlt noch die Anweisung um den Rest zu berechnen.
 

Zurück
Oben