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

  • sztanozs

    veterán

    válasz bandi0000 #3494 üzenetére

    12-nél a 1100 helyes (1*8+1*4+0*2+0*1)

    Vagy fordítva rakod be a tömbbe (végétől kezdve és a végére teszel egy '\0'-t (string vége karakter C-ben) és onnan iroatod ki ahova visszafele eljutottál (ezt csinálja az én példám). Vagy feltöltöd a tömböt rendesen és kiiratáskor címezed meg a végétől és egy csökkenő ciklusban egyesével kiírod a számokat (de ugye csak annyit, amennyit beleraktál).

    Harmadik megoldás - valahogy így (fordító és ellenőrzés nélkül):
    bitmaszk és bitshift
    char* binaryConv(int szam){
    char* binary = "0000|0000|0000|0000";
    int bitmask = 0x4000; //16 384
    int counter = 0;
    while (bitmask > 0){
    if (szam & bitmask) binary[counter] = '1'; // ha az adott bit 1, akkor a stringbe is azt helyettesítjük
    counter++;
    if (counter%4 == 0) counter++; //átléptetni az elválaszókat
    bitmask = bitmask >> 1; //bitmaszkot eggyel jobbra tolni
    }

    1) Csak 4 jegyű számokig működik (azaz pontosabban 16384-ig)
    2) Amit visszaad ki lehet irattatni printf-fel...
    return binary;
    }

    JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

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