今天分享一道题目,用三种方法来求解
二进制1的个数
方法1
我们的十进制除10和取余数就可以得到我们每一位的数字,那我们的二进制也可
以
#include<stdio.h>
int num_find_1(unsigned int n)
{
int count = 0;
while (n)
{
if (1 == n % 2)
{
count++;
}
n /= 2;
}
return count;
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = num_find_1(n);
printf("%d", ret);
return 0;
}
这是一种方法,另外一种就是我们可以用移位操作符来算
int num_find_1(int n)
{
int i = 0;
int count = 0;
for (i = 0; i < 32; i++)
{
if (((n >> i) & 1) == 1)
{
count++;
}
}
return count;
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = num_find_1(n);
printf("%d", ret);
return 0;
}
这个方法是不是也是特别妙呢,当然还有更妙的方法,请看!!!
int num_find_1(int n)
{
int i = 0;
int count = 0;
while (n)
{
n = n & (n - 1);
count++;
}
return count;
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = num_find_1(n);
printf("%d", ret);
return 0;
}
相信看完总会学会一种方法,今天的分享就到这里啦,不知道大家有没有注意到我的开头不一样了,嘻嘻。