C语言每日一题之整数求二进制1的个数
今天分享一道题目,用三种方法来求解
二进制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;
}
相信看完总会学会一种方法,今天的分享就到这里啦,不知道大家有没有注意到我的开头不一样了,嘻嘻。