题目描述:给定一个int型整数,输出这个整数的二进制的0和1的个数。
输入描述:输入一个整数n
输出描述:输出这个整数的二进制的0和1的个数。
C语言代码
#include <stdio.h>
int main()
{
int n, a = 0, b = 0;//a存0的个数,b存1的个数
scanf("%d", &n);
while(n != 0)
{
if (n % 2 == 1)
{
b++; n = (n - 1) / 2;
}
else { a++; n = n / 2; }
}
printf("count0=%d count1=%d", 32-b, b);
return 0;
}
此题只需要统计1和0的个数,用辗转相除法判断0和1的个数就可,代码中可不统计0的个数,因为int型的二进制个数为32位,只需将32减掉1的个数就可。