何が原因なんでしょうか・・。よろしくお願いします。
#include<stdio.h>
int count_bits(unsigned x)
{
int bits = 0;
while(x){
if(x & 1U) bits++;
x >>= 1;
}
return bits;
}
int int_bits(void)
{
return count_bits(~0U);
}
void print_bits(unsigned x)
{
int i;
for(i = int_bits() - 1; i >= 0; i--)
putchar(((x >> i) & 1U) ? '1' : '0');
}
unsigned set(unsigned x,int pos)
{
return(x|(1<<pos));
}
unsigned reset(unsigned x,int pos)
{
return(x&(~(1<<pos)));
}
unsigned inverse(unsigned x,int pos)
{
return(x^(1<<pos));
}
int main(void)
{
unsigned no, x;
printf("符号なし整数のxビット目を変更します。\n");
printf("非負の整数を入力してください:");
scanf("%u",&no);
printf("何ビット目を変更しますか:");
scanf("%u",x);
printf("\nno :"); print_bits(no);
printf("\nset :"); print_bits(set(no,x));
printf("\nreset :"); print_bits(reset(no,x));
printf("\ninverse :"); print_bits(inverse(no,x));
putchar('\n');
return 0;
}