Bits

#include<stdio.h>

int count(int n) //counting bits

{

int count=0;

while(n)

{

n=n>>1;

count++;

}

return count;

}

int count1(int n) //counting 1 bits

{

int count=0;

while(n)

{

if(n&1)

count++;

n=n>>1;

}

return count;

}

int count0(int n) //counting 0 bits

{

return count(n)-count1(n);

}

int set_xth_bit(int n, int x)

{

int nr=1<<(x-1);

n=n|nr;

return n;

}

int unset_xth_bit(int n, int x)

{

int nr=1<<(x-1);

nr=~nr;

n=n&nr;

return n;

}

int change_xth_bit(int n, int x)

{

int nr=1<<(x-1);

n=n^nr;

return n;

}

int main() {

int n=0b10001;

printf("initial number=%d\n",n);

printf("total number of bits:%d\n",count(n));

printf("total number of 1:%d\n",count1(n));

printf("total number of 0:%d\n",count0(n));

n=set_xth_bit(n,4);

printf("bit 4 set:%d\n",n);

n=unset_xth_bit(n,4);

printf("bit 4 unset:%d\n",n);

n=change_xth_bit(n,4);

printf("bit 4 changed:%d\n",n);

}