问题描述
- 这个小程序的函数声明意思?
-
3.编写一个函数,该函数接受一个int参数,并返回这个参数中打开的位的数量。在程序中测试该函数。
#includeint count_on(int n);
int main(void)
{
int n;
printf("input a number(q to quit):");
while( scanf("%d", &n) == 1 )
{
printf("%x----bit on number : %dn", n, count_on(n) );
printf("input a number(q to quit):");
}
printf("quitn");return 0;
}int count_on(int n)
{
int count = 0;
while( n/2 )
{
count += n%2;
n = n >> 1;
}
count += n%2;
return count;
}
什么是打开的位的数量?还有这个函数是什么意思?
解决方案
int n = 123;
int c = 0;
while ( n > 0)
{
c+= n % 2;
n /= 2;
}
printf("%d", c);
解决方案二:
打开的位表示一个整数转换为2进制数中1的个数。
例如:3=11B;那么位的个数就是2;
5=101B;那么位的个数也是2;
函数的功能就是除2取余来计算十进制数转换为二进制数后中1的个数。
解决方案三:
计算二进制表示中1的有位数
while(n){
count += n & 1;
n >>= 1;
}
时间: 2024-10-22 09:43:28