怎么调用bitcount函数输入一个整数得出该数中0的个数
你bitcount是计算数n的二进制中有多少个0还是10进制中有多少个0?
如果是二进制中有多少个0,不足32位的是否需要补全,比如8的二进制是1000,函数要返回3还是返回31?
三种代码都给你贴上了,你根据需要选择吧。
#include <stdio.h>
//返回二进制中0的个数,8的二进制是1000,返回3
int bitcount_1(int n)
{
int t;
int cnt = 0;
while(n)
{
t=n%2;
if(t==0) cnt++;
n/=2;
}
return cnt;
}
//返回二进制中0的个数,8的二进制是1000,返回31
int bitcount_2(int n)
{
int t;
int cnt = 0;
while(n)
{
t=n%2;
if(t==1) cnt++;
n/=2;
}
return (32-cnt);//整数4个字节共32位,减去1的个数
}
//返回n的十进制中有多少个0
int bitcount_3(int n)
{
int t,cnt=0;
while(n)
{
t = n%10;
if(t==0)
cnt++;
n/=10;
}
return cnt;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d中含有%d个0\n",n,bitcount_1(n));
printf("%d中含有%d个0\n",n,bitcount_2(n));
printf("%d中含有%d个0\n",n,bitcount_3(n));
return 0;
}
bitcount是自定义函数么?