求一个数的二进制中1的个数(三种方法)
程序员文章站
2022-07-15 09:50:23
...
第一种:
#include<stdio.h>
int Number(unsigned int num)
{
int tmp,count=0;
while (num!=0 )
{
tmp = num % 2;
num = num / 2;
if (tmp == 1)
count++;
}
return count;
}
int main()
{
int num = -1;
int n=Number(num);
printf("%d\n", n);
system("pause");
return 0;
}
第二种:将num和1进行按位与运算,可以得出最低位,结果为1,最低位为1;结果为0,最低位为0。然后循环将num右移一位进行运算。
#include<stdio.h>
int Number(unsigned int num)
{
int tmp,count=0;
while (num != 0)
{
tmp=num & 1;
if (tmp == 1)
count++;
num=num >> 1;
}
return count;
}
int main()
{
int num = -1;
int n = Number(num);
printf("%d\n", n);
return 0;
}
第三种:num = num & num-1:让num和num-1进行按位与运算,将二进制中出现的1从低位到高位依次变成0,num=0循环终止,循环的次数就为1的个数
#include<stdio.h>
int Number(unsigned int num)
{
int tmp, count = 0;
while (num != 0)
{
num = num & num-1;
count++;
}
return count;
}
int main()
{
int num = 15;
int n = Number(2019);
printf("%d\n", n);
system("pause");
return 0;
}
上一篇: 求一个整数存储在内存中的二进制中1的个数
推荐阅读
-
Linux统计一个文件中特定字符个数的方法
-
php中两个**可以直接求一个数的n次方 为什么还要有pow()函数
-
向一个数组中插入一个1~100的随机数
-
C#实现输入10个数存入到数组中并求max和min及平均数的方法示例
-
C#实现输入10个数存入到数组中并求max和min及平均数的方法示例
-
python中计算一个列表中连续相同的元素个数方法
-
剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)
-
Linux统计一个文件中特定字符个数的方法
-
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
-
用C语言写一个函数返回参数二进制中1的个数