Dezimal nach Binär umrechnen Problem



  • Hoppla, die If-Anweisungen 😞 😞 😞 😞 ja klar dann funktz auch

    Danke Leute
    Greetz Hami85



  • Tja, und wenn ich diesen Code im C++-Forum posten würde, käme bestimmt einer, der fragt, warum ich versuche die Zuweisung 'A = A' in den Stream '1' zu schreiben ... 😞

    (Außerdem versuche ich ebenfalls cout um Binaerzahl[i] Stellen nach links zu verschieben!)



  • LordJaxom schrieb:

    @net:
    Der war nicht gut, ausgerechnet der Block ist 1:1 vom Originalprogramm kopiert :p

    na gut, aber da ich ja immer was zu meckern habe: für das 'if(A%2 != 0)' sollte man besser 'if (A & 1)' schreiben. das ist um ein vielfaches schneller...



  • Waere es nicht noch schneller, auf das if ganz zu verzichten und gleich

    Binaerzahl[i] = A&1;
    

    zu schreiben?



  • tim_g schrieb:

    Waere es nicht noch schneller, auf das if ganz zu verzichten und gleich

    Binaerzahl[i] = A&1;
    

    zu schreiben?

    kann man schwer sagen, schliesslich schreibste ja dann auch noch die nullen rein. müsste man mal ausprobieren...



  • Und wenn man die Funktion zweimal benutzt kommt Müll raus, wenn das Array nicht reinitialisiert wird. Also wenn dann schon auch die Nullen reinschreiben.

    Ausserdem hat der OP offensichtlich noch kleinere Probleme mit Array bzw. dem Zugriff auf selbige (siehe den Bufferoverflow Binaerzahl[7] = 1;)

    Aber wozu überhaupt irgendwas in das Array reinschreiben, wenn man es eh bloss ausgeben will?



  • TactX schrieb:

    Aber wozu überhaupt irgendwas in das Array reinschreiben, wenn man es eh bloss ausgeben will?

    dann braucht er vielleicht sowas:

    void print_binary (int v)
    {
       int z;
       if (z = v>>1)
          print_binary (z);
       putchar ('0' + v - (z<<1));
    }
    


  • Naja, das geht mächtig in die Hose wenn v negativ ist, und der Compiler arithmetisch shiftet.

    Und Rekursion geht ja schonmal gar nicht 😃



  • TactX schrieb:

    Naja, das geht mächtig in die Hose wenn v negativ ist, und der Compiler arithmetisch shiftet.

    dann machste eben 'unsigned' vor alles...

    TactX schrieb:

    Und Rekursion geht ja schonmal gar nicht 😃

    ach, die paar bytes stack. pc-programme haben doch immer 1mb oder so
    dafür wird's in der richtigen reihenfolge ausgegeben 😉



  • Hab hier auch mal ne Lösung um eine Zahl in Binärdarstellung ausgeben zu lassen (sieht dem von net ein wenig ähnlich):

    void print_bin(unsigned int zahl)
    {
      unsigned int i=sizeof(int)*8;
      while(i-- != 0)
        printf("%1u", ((zahl >> i) & 1));
    }
    

Anmelden zum Antworten