[ nenadnesta @ 12.11.2010. 09:34 ] @
evo jednog programa koji korektno funkcionise
,cita decimalne cele brojeve i ispisuje njihovu vrednost u binarnom obliku.

Code:
#include <stdio.h>
main() {
  short dec, i, bit;

  while(1) {
    printf("decimalni broj?");
    scanf("%hd, &dec");

    if(dec==9999) break;

    printf("binarni broj:");

    for(i=1; i<=16; i++)
    {
      bit=(dec&0x8000)!=0;

      printf ("%d",bit);
      if(i%4==0) printf(" ");

      dec<<=1;
    }

    printf ("\n");
  }
}


ako bi neko bio ljubazan da prokomentarise bit=(dec&0x8000)!=0; naredbu i da je malko detaljnije pojasni, u zagradama bi trebao biti 16 bitni broj valjda, kako to, tu mi neshto zapinje!! .....hvala.....

[Ovu poruku je menjao Mihajlo Cvetanović dana 12.11.2010. u 11:11 GMT+1]
[ peca89bg @ 13.11.2010. 17:07 ] @
Code:

#include <stdio.h>

/* Funkcija stampa bitove datog celog broja x.
Vrednost bita na poziciji i je 0 ako i samo ako se pri konjunkciji
broja x sa maskom 000..010....000 - sve 0 osim 1 na poziciji i, dobija 0.
Funkcija krece od pozicije najvece tezine kreirajuci masku pomeranjem
jedinice u levo za duzina(x) - 1 mesto, i zatim pomerajuci ovu masku za
jedno mesto udesno u svakoj sledecoj iteraciji sve dok maska ne postane 0.
*/

void print_bits(int x)
{
/* Broj bitova tipa unsigned */
int wl = sizeof(int)*8;
unsigned mask;
for (mask = 1<<wl-1; mask; mask >>= 1)
putchar(x&mask ? '1' : '0');
putchar('\n');
}
main()
{
print_bits(127);
print_bits(128);
}


ovo ti je mnogo bolje resenje...