#include void ispisi(unsigned int n){ int x=sizeof(unsigned)*8; unsigned maska=1; maska<<=(x-1); for(;maska;maska>>=1){ if(maska & n) printf("1"); else printf("0"); } printf("\n"); } int gornjapolovina(unsigned n){ unsigned maska=1; int x=sizeof(unsigned)*8,brojac=0; n=n>>(x/2); /* radimo konjunkciju sa x/2 bitova vece tezine odbacujemo levu polovinu bitovskim pomeranjem za x/2 mesta u desno sa leve strane se dopisuju nule(jer je broj n unsigned)*/ for(;maska;maska<<=1){ if(maska&n) brojac++; } return brojac; } int donjapolovina(unsigned n){ //slicna ideja kao u funkciji gornjapolovina unsigned maska=1; int x=sizeof(unsigned)*8,brojac=0; n=n<<(x/2); for(;maska;maska<<=1){ if(maska&n) brojac++; } return brojac; } void rezultat(int n,int m){ if(n==m) printf("Broj jedinica je jednak.\n"); else if(n>m) printf("Vise jedinica se nalazi na bitovima vece tezine.\n"); else printf("Vise jedinica se nalazi na bitovima manje tezine.\n"); } int main(){ unsigned n; printf("Unesite neoznacen broj n: "); scanf("%u",&n); printf("Bitovski zapis broja %d je: ",n); ispisi(n); rezultat(gornjapolovina(n),donjapolovina(n)); return 0; }