von Basis 10 in Basis x umwandeln

ocsme

Top Contributor
Guten Tag,

ich hab hier zwei schleifen geschrieben um eine Zahl z. B. 23 in eine andere Basis z. B. Binärdarstellung zu schreiben.

Java:
int input=23;
        int tmp=input;
        int base=2;
        int erg=0;
        int inverse=0;
       
       
        while(tmp>0) {
            int k=tmp%base;
            inverse=inverse*10+k;
            tmp/=base;
        }
        while(inverse>0) {
            int k=inverse%10;
            erg=erg*10+k;
            inverse/=10;
        }
        System.out.println(erg);

Was mir daran nicht gefällt sind die 2 While schleifen. Ich komme derzeit nicht drauf wie man das ändern kann damit ich nur 1 Schleife habe 😉

Kann mir da jemand auf die Sprünge Helfen?

Danke

LG
 
Schleifen sind sooo 2017, nutze Rekursion:
Java:
public static long cvt(long v, int sb, int db) {
  return v > 0 ? sb * cvt(v / db, sb, db) + v % db : 0;
}
// Convert from source base to destination base:
long v = cvt(12345, 10, 2);
 
ich hab hier zwei schleifen geschrieben um eine Zahl z. B. 23 in eine andere Basis z. B. Binärdarstellung zu schreiben.

Hier steht doch die Beschreibung oder meinst du zu erklären was ich wo im Code mache?
http das ist natürlich super geil!!! Dank dir 🙂

Doch ich würde es trozdem gerne noch versuchen mit 1er Schleife hin zu bekommen 🙂 hihi!!

LG
 
Du kannst die rekursive Form mit etwas Nachdenken in eine Iteration umformen.
Java:
public static long cvtIt(long v, int sb, int db) {
  long res = 0;
  while (v > 0)
    res = (res + (v /= db) % db) * sb;
  return res;
}
 
ja das haben wir sogar mal gelernt doch leider ist das schon zu lange bei mir her 🙁
Muss mir deine Rekrusive Funktion da eh erstmal genauer anschauen was da genau passiert 🙂 bin da noch nicht so ganz durch gestiegen 😛
lg
 

Zurück
Oben