求一个整数存储在内存中的二进制中1的个数
程序员文章站
2022-07-15 09:54:05
...
求一个整数存储在内存中的二进制中1的个数
代码如下:
#include<stdio.h>
int main()
{
int num=0;
int count=0;
scanf("%d",&num);
while(num)
{
if(num%2==1)
count++;
num=num/2;
}
printf("%d\n",count);
return 0;
}
这个代码存在的问题是,如果输入的是一个负整数,那么结果就是错误的,运行如图:
另一种代码如下:
int main()
{
int num=0;
int i=0;
int count=0;
scanf("%d",&num);
for(i=0;i<32;i++)
{
if(1==((num>>i)&1))
count++;
}
printf("%d\n",count);
return 0;
}
运行结果如下:
菜菜的代码,希望能够帮助到你哟!
推荐阅读
-
剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)
-
用C语言写一个函数返回参数二进制中1的个数
-
我们在删除SQL Sever某个数据库表中数据的时候,希望ID重新从1开始,而不是紧跟着最后一个ID开始需要的命令
-
[c语言]统计一个数二进制中的1的个数
-
LeetCode 1 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
1.无符号整数的二进制中1的个数2.十进制数转化为二进制数
-
写一个函数返回参数二进制中 1 的个数
-
写一个函数返回参数二进制中 1 的个数
-
写一个函数返回参数二进制中 1 的个数
-
写一个函数返回参数二进制中1的个数