Hallo,
Ich möchte gerne vom Hex/Oct Zahlensystem ins dezimale umrechnen , da nun aber die zahlen leider öfters größer als ein long werden hab ich mal gegoogelt und "BigInteger" gefunden , nun okay er zählt auch richtig aber leider (nur bei Hex von Octal nach Dezi. gehts ohne problem) bis zur 6/7 stellen
ich habe aber keine ahung wieso , bei: "FFFFFFFF" ist das ergebniss dann plötzlich -1
Java:
publicArrayList<String>allToDezi(String nummer,int base){ArrayList<String> ergebniss =newArrayList<String>();String[] stringRechner = nummer.split("");// Splittet den string mit den zahlen um sie einzelnd mulitplizieren zu könnenint multiplikator =0;// x^multiplikatorBigInteger endErgebniss =BigInteger.valueOf((long)0);for(int x = stringRechner.length -1;x >0;x--)//geht solang durch bis er alle gesplitteten nummer hoch gerechnet hat{int nummerRechner =Integer.parseInt(stringRechner[x]);//wandelt die zahl in einen int umBigInteger nummerPow =BigInteger.valueOf(base);
nummerPow = nummerPow.pow(multiplikator);// rechnet schonmal zb 16^12(multiplikator)BigInteger nummerErgebniss = nummerPow.multiply(BigInteger.valueOf(nummerRechner));// x * (x^mulitplikator)
ergebniss.add(nummerRechner +"·"+ base +"^"+ multiplikator +" = "+ nummerErgebniss);// Fügt das zur ArrayList<String> hinzu
endErgebniss = endErgebniss.add(nummerErgebniss);// Am ende das ergebniss was raus kommt wenn man alles addiert ( das was falsch angezeigt wird)
multiplikator++;//den multiplikator erhöhen}
ergebniss.add("Ergebniss : "+ endErgebniss);// Fügt das zur ArrayList<String> hinzureturn ergebniss;}
Ich schreibe es selbst damit ich mir es zumindestens etwas einpräge wie man es rechnet und der zweite grund ist da mit ich den rechen weg habe (für die schule)
Ui, lobenswert.
Dafür gibt's jetzt Wissenswertes: Zweierkomplement ? Wikipedia
Dein Problem ist also kein Fehler, sondern Interpretationssache. Für den Fall, dass ein Referat draus wird, solltest du das erwähnen.
[EDIT]Naja, nichts zu Danken... ich (zumindest) war ja eh' zu spät...[/EDIT]
Wir schreiben nächste Woche eine Arbeit wo wir sowas umrechnen müssen , und da ich gerne zur zeit noch "hobby" programmiere habe ich mir dafür ein app geschrieben weil ich sonst zu faul wäre es zu Lernen
Sowas programmieren zu können ist eine Sache, es dann selbst per Hand auch zu können eine andere.
Nimm dir Stift un Papier und rechne damit deine Hex- in Decimalzahlen um. So etwas muss man einfach üben und immer wieder üben... wenn du es dann wirklich kannnst, dann schreibt sich auch der Programmcode von ganz alleine.
Zu Faul ist aber keine Ausrede.
BTW.: Wusstest du, dass das Dezimalsystem recht unhandlich in Sachen zu Fuss umrechnen" ist?
Für Oktal und Hexadezimal musst du dir zu den einzelnen Ziffern (0 bis 7 bzw. 0 bis F) nur die Bitfolgen merken. Schon kannst du Hexadezimal- bzw. Oktalzahlen ganz schnell Binär hinschreiben und musst anschliessend nur noch alle 3 bzw. 4 Bits gruppieren und die Ziffern der entstehenden Bytefolgen als Ergebnis hinschreiben. Beim Dezimalsystem klappt das leider nicht.
Klappt auch von Oktal nach Hexadezimal (Da kann man sich auf den Kopf stellen XD). Die Sache hat nur einen Nachteil: Ich wüsste heute kaum noch, wie man diese Zahlensysteme "zu Fuss" umrechnen sollte. Das schlug sich während einer Umschulung auch geringfügig auf die Note nieder, als mich der Dozent nach einem Rechenweg gefragt hat.
Wie dem auch sei. Viel Erfolg bei der Arbeit.