Hey, Ich habe gerade für einen Test gelernt und wollte fragen wie ich meinen Algorithmus, der die Ziffer einer Basis (Wie Oktal,Binär oder Hexadezimal) in das Dezimalsystem umrechnet, noch effizienter machen kann.
Um etwas in von z.b. Binär in Dezimalumzuwandeln muss man so vorgehen : 1010 = 1*2[SUP]3[/SUP] + 0*2[SUP]2[/SUP] + 1*2[SUP]1[/SUP] + 0*2[SUP]0[/SUP]
Jetzt müssen wir das mit dem Hornerschema machen das folgender Maßen geht (Beispiel mit Oktal): 123123[SUB]8[/SUB] = (((((1*8+2) *8+3)*8+1)*8+2)*8+3)*8 und so müssen wir das in Dezimal umrechnen....
Ich hab mir gedacht ich machs gleich ein bisschen besser ,also dass man von jeder beliebigen Basis eine Zahl in das Dezimalsystem umwandeln kann!
Hier der Code:
Vielen Dank für die Antworten, euer Alex
Um etwas in von z.b. Binär in Dezimalumzuwandeln muss man so vorgehen : 1010 = 1*2[SUP]3[/SUP] + 0*2[SUP]2[/SUP] + 1*2[SUP]1[/SUP] + 0*2[SUP]0[/SUP]
Jetzt müssen wir das mit dem Hornerschema machen das folgender Maßen geht (Beispiel mit Oktal): 123123[SUB]8[/SUB] = (((((1*8+2) *8+3)*8+1)*8+2)*8+3)*8 und so müssen wir das in Dezimal umrechnen....
Ich hab mir gedacht ich machs gleich ein bisschen besser ,also dass man von jeder beliebigen Basis eine Zahl in das Dezimalsystem umwandeln kann!
Hier der Code:
Java:
public static int inDezi(String zahlen,int basis)
{
//Erstelle ArrayList
List<Integer> iListe = new ArrayList<Integer>();
char zahl = ' ';
int zahlhelp = 0;
int ergebnis = 0;
if(10<basis && basis <=16) {
for(int i = 0;i<zahlen.length();i++){
if(10<=(int)zahlen.charAt(i)-55&&(int)zahlen.charAt(i)-55<=16){
zahl = (char)(zahlen.charAt(i)-(65-10));//-10 weil 'A'=65 und -65 wäre dann 0, aber A = 10 deshalb A-55 denn dann ist der Integerwert=10
zahlhelp = (int)zahl;
}else{
zahl = (char)(zahlen.charAt(i)-48);
zahlhelp = (int)zahl;
}
iListe.add(zahlhelp);
}
}else {for(int i = 0;i<zahlen.length();i++) {
zahl = (char)(zahlen.charAt(i)-48);
zahlhelp = (int)zahl;
iListe.add(zahlhelp);
}}
ergebnis =0;
for(int i = 0;i<iListe.size();i++)
{
if(i+1==iListe.size())
{
ergebnis += iListe.get(i);
}
else{
ergebnis = (ergebnis+iListe.get(i))*basis;}
}
return ergebnis;
}
Vielen Dank für die Antworten, euer Alex
Zuletzt bearbeitet: