File: Stare vježbe/vjezbe13/82__bitcount.c

  1. /*
  2.   82__bitcount.c
  3.   Uvode se operatori nad bitovima (bitwise operatori).
  4.   -----
  5.   Za uneseni pozitivni broj ispisuje se koliko on ima jedinica u
  6.   binarnom zapisu.
  7. */
  8.  
  9. int main()
  10. {
  11. int x, i, b=0, br_znam=0;
  12. int znam[32]={0};
  13.  
  14. printf("Unesite broj: ");
  15. scanf("%d", &x);
  16.  
  17. while(x!=0) {
  18. /* & predstavlja logicki AND operator koji se primjenjuje na
  19.   svakom bitu posebno
  20.   -> x & 1 provjerava da li je posljednja binarna znamenka broja
  21.   x jednaka 1 */
  22. if (znam[br_znam++]=x & 1)
  23. b++;
  24. /* x>>=1 <--> x=x>>1
  25.   ">>" predstavlja tzv. desni-shift operator */
  26. x>>=1;
  27. }
  28.  
  29. printf("Broj jedinica u binarnom zapisu: %d\n", b);
  30.  
  31. for(i=br_znam-1; i>=0 ; i--)
  32. printf("%d",znam[i]);
  33.  
  34. return 0;
  35. }
  36.  
  37.