int zu double convertieren



  • versuche ich gerade eine umwandlung eines 8 bit - array in deine dezimalzahl vorzunehmen...

    nun habe ich mir alles soweit ausgedacht und muss aus dem array welches vom typ bool ist aus den binärzahlen eine dezimalzahl bekommen

    dazu habe ich mir das überlegt...

    for(i = 8; i >= 0;i = 0)
    {
        dezimalzahl = dezimalzahl + Array [i] * pow(2, i);
    }
    

    soweit ja super... aber das i in der pow funktion muss vom typ double sein und i muss aber für das array schon in int deklariert sein...!
    wie bekomme ich es am geschicktesten hin???

    vielleicht ja mal eine gute idee von euch...

    lg



  • Wie wärs damit?

    dezimalzahl = dezimalzahl + Array [i] * pow(2.0, (double)i);
    


  • Erstens: Der Compiler kann einen int implizit in einen double umwandeln, wenn das wirklich notwendig ist.

    Zweitens: Wenn du mit Ganzzahlen arbeitest, gibt es da auch einige Trick - u.a. Array[i]<<i als Alternative für dein pow().



  • Btw.

    pow(2, i);
    

    entspricht einem Linksshift von 1 um i Stellen.

    pseudo:
    pow(2,0) = 1<<0
    pow(2,1) = 1<<1
    ..
    pow(2,n) = 1<<n
    


  • Du brauchst den Wert auch nicht jedesmal neu berechnen, sondern nimmst ihn mit in die Schleife rein.
    ⚠ Du musst auch noch mal deine Schleifenbedingungen überprüfen.
    Von 8 bis 0 sind 9 Durchläufe und wenn du als Iterationsschritt i = 0 angibst, hast du eine Endlosschleife

    int Stellenwert = 128;
    
    for(i = 7; i >= 0;i--)
    {
        dezimalzahl = dezimalzahl + Array [i] * Stellenwert;
        Stellenwert /= 2; // oder Stellenwert >>= 1;
    }
    

    oder andersherum

    int Stellenwert = 1;
    
    for(i = 0; i < 8;i++)
    {
        dezimalzahl = dezimalzahl + Array [i] * Stellenwert;
        Stellenwert *= 2; // oder Stellenwert <<= 1;
    }
    


  • ja... da ahbe ich hier im forum geschlust...:D

    ich habe i--

    aber auch danke für den hinweis...! 😃



  • Brainstorm_23 schrieb:

    ja... da ahbe ich hier im forum geschlust...:D

    ich habe i--

    aber auch danke für den hinweis...! 😃

    Du brauchst das nicht abschreiben, das produziert nur neue Fehler.
    Der Trick heisst Copy & Paste.


Anmelden zum Antworten