BigInteger , rechen problem

  • Themenstarter Themenstarter .Buh
  • Beginndatum Beginndatum
B

.Buh

Gast
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:
 	public  ArrayList<String> allToDezi(String nummer,int base)
 	{
 		ArrayList<String> ergebniss = new ArrayList<String>();
 		
 		String[] stringRechner = nummer.split("");  // Splittet den string mit den zahlen um sie einzelnd mulitplizieren zu können
 		
 		int multiplikator = 0; // x^multiplikator
 		
 		BigInteger 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 um
 		  
 		  BigInteger 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> hinzu
 		return 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 😛

Und trotzdem zu dir auch danke ! 😀
 
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.
Code:
#decade -> Oktal
1101 1110 1100 1010 1101 1110
110111101100101011011110
110 111 101 100 101 011 011 110
->67545336
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.
 

Neue Themen


Zurück
Oben