Hirdetés

Új hozzászólás Aktív témák

  • kovisoft
    őstag

    Ha csak egy változót lehet használni és az maga a változó, amibe beolvastad a decimális számot, akkor itt egy ocsmány és gagyi megoldás: :B

    printf("%d%d%d%d%d\n", (dec&16)>>4, (dec&8)>>3, (dec&4)>>2, (dec&2)>>1, (dec&1));

    Mivel tudjuk, hogy legfeljebb 31 lehet a dec (ezt illik ellenőrizni előtte), ezért szimplán sorban kiolvassuk dec alsó 5 bitjét.

    Közben még agyaltam egy általánosabb megoldáson is, ami egyesével olvassa ki a biteket. Triviálisan mindig az alsó bitet lehetne kiolvasni, kiírni, aztán jobbra shiftelni a biteket a számban amíg el nem fogynak a bitek. Viszont így fordított sorrendben írnánk ki a biteket. A lenti kód ehelyett mindig a felső bitet olvassa ki, majd balra shifteli a biteket, de legelőször berak jobbra egy plusz 1-es bitet, hogy tudja, mikor kell abbahagyni a ciklust:

    dec=(dec<<1)|1;
    while ((dec&255)>0)
    {
      printf("%d", (dec&256)>>8);
        dec=dec<<1;
    }
    printf("\n");



    Szerk: mi a hibaüzenet?

Új hozzászólás Aktív témák