Umrechung Binär in Dezimal und Hexadezimal

newjavauser

Mitglied
Hallo miteinander,

ich hab hier schon ein paar Beiträge zu diesem Thema gelesen. Leider hat nichts zu meinem Problem gepasst. Also dacht ich mir, ich bin einmal so dreisst und öffne einfach ein neues thema. Sorry schonmal!

Ich habe die glorreiche Aufgabe eine Umrechnung von Binär in Dezimal und Hexadezimal in Java zu schreiben. Nach etlichen Stunden des Suchens bei "google ist deine Freund" hab ich dann auch ein halb funktionsfähiges Programm fertiggestellt. Jetzt bin ich mit meinem Latein am Ende und hoffe auf Eure Hilfe...

Java:
class Binaer2Dezimal2Hexa {
      public static void main(String[] args) {
             String binaer = args[0];
             long dezimal = Long.parseLong(binaer,2);
             String hexadezimal = Long.toHexString(dezimal);

             System.out.println("Binär: " + binaer);
             System.out.println("Dezimal: " + dezimal);
             System.out.println("Hexadezimal: " + hexadezimal);
                                              }
}

Kurze Erläuterung: Die positiven Ergebnisse sind ganz toll nur sobald ich mit 1 (ganz links, also -) beginne spuckt er irgendein Quark aus. Wo liegt mein Fehler?
Wir dürfen eig. kein String benutzen, aber ich hab 0 Ahnung wie ichs ohne hinbekommen soll! 🙁

Vielen Dank im voraus

Gruß
Benny
 
Wir dürfen eig. kein String benutzen, aber ich hab 0 Ahnung wie ichs ohne hinbekommen soll! 🙁
Und wie soll dann die Darstellung der Zahlen erfolgen?
Wenn das eine Aufgabe ist, dürft Ihr sicherlich auch nicht solche Methoden wie parse... toHex... verwenden und sollt die Umrechnung selbst vor nehmen:
z.B. 101 binär ==> 1*2^2 + 0*2^1 + 1*2^0 dezimal
 
parse hatte wir schon. tohex/string nicht. Er meinte String wäre nicht erlaubt.

Aber darf die Eingabe via Konsole keine Leerzeichen enthalten. Mein Problem beim rechnerischen Lösen ist einfach, dass ich nicht weiss wie ich die einzelnen 0 und 1en seperat ansprechen kann.

Aufgabe besteht aus einer 32 bit Übung und mein erstes Gedanke war einfach 32 Variablen zu Vergeben. Geht das aber leider mit meinem Kenntnisstand nicht, da für mich 10101 eine Variable ist und ich nicht weiss wie ich sie aufbreche...

langer Rede kurzer Sinn.

Findest du einen Fehler warum die Negativen nicht negativ sind?

Gruß
 
Beziehst Du Dich auf das Zweierkomplement? Das wird zwar intern bei der Verwaltung der Zahle verwendet, die parse... Methoden kennen das aber nicht. Wenn Du mit den Methoden eine negative Zahl parsen willst musst Du ein Minus davorschreiben.
Übringens ist die Variable binaer ein String. Soviel zur Nichtverwendung von String ;-)
 
Für die Umrechung von Binär auf Dezimal bezieh ich mich aufs 2er....

Aber die zu Prüfenden "Werte" sind

1. positiv: 0111 1111 1111 1111 1111 1111 1111 1111 entspricht 2147483647 bzw. 7F FF FF FF

funktioniert.


Aber bei

2. negativ: 1000 0000 0000 0000 0000 0000 0000 0000 entspricht -2147483648 bzw. 80 00 00 00

funktionierts nicht, da dort das minus fehlt. wobei die 1 doch dem Minus entspricht oder hab ich da nen Denkfehler drinnen?

Gruß
 
Danke schon einmal für deine Hilfestellung.


Jetzt hab ichs verstanden was meine falsche Darstellung angeht.

Wie kann ich denn das Problem lösen? Hast du da einen Vorschlag/Denkanstoß für mich?


Gruß
 

Zurück
Oben