C语言 求一个整数存储在内存中的二进制中1的个数
程序员文章站
2022-07-15 09:50:17
...
这里介绍两种算法 用-1来做例子
1.
#include<stdio.h>
int main()
{
int num = -1;
int count = 0;
int i = 0;
for (i = 0; i < 32; i++)
{
if ((num >> i) & 1 == 1)
count++;
}
printf("%d\n", count);
return 0;
}
上述的方法一能够解决该问题,但是效率不高,大量的循环是无意义
2。
#include<stdio.h>
int main()
{
int num = -1;
int count = 0;
int i = 0;
while(num)
{
num=mun&(num-1)
count++;
}
printf("%d\n", count);
return 0;
}
这个方式解决了效率低的问题 但很难想到
num=num&(num-1) 从右到左依次取消掉“1”
上一篇: 求一个数的二进制中1的个数(三种方法)
下一篇: git产生私钥和公钥再转ppk
推荐阅读
-
用C语言写一个函数返回参数二进制中1的个数
-
[c语言]统计一个数二进制中的1的个数
-
用C语言判断一个机器字节序列的存储模式是大端还是小端存储以及浮点型在内存中的存储
-
c语言将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1.要求改为1,4,5,6,8.
-
C语言学习之将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1. 要求改为1,4,5,6,8。
-
求一个整数存储在内存中的二进制中1的个数
-
【C语言】——求一个整数存储在内存中二进制中的1的个数的三种方法
-
求一个整数存储在内存中的二进制中的1的个数
-
求一个整数存储在内存中的二进制中1的个数
-
求一个数的二进制中1的个数(三种方法)