/*按位运算*/
#include <stdio.h>
/*返回整数x中设置的位数*/
int count_bits(unsigned x)
{
int bits = 0;
while (x)
{
if (x & 1U) bits++;
x >>= 1;
}
return bits;
}
/*返回unsigned型的位数*/
int int_bits(void)
{
return count_bits(~0U);
}
/*显示unsigned型的位的内容*/
void print_bits(unsigned x)
{
int i;
for (i = int_bits() - 1; i >= 0; i--)
putchar(((x >> i) & 1U) ? '1' : '0');
}
int main(void)
{
unsigned a;
printf("请输入一个非负整数。\n");
printf("a:"); scanf("%u", &a);
printf("\na ="); print_bits(a);
printf("\nlimt = %u", int_bits());
return 0;
}