题解 | #求int型正整数在内存中存储时1的个数#

求int型正整数在内存中存储时1的个数

http://www.nowcoder.com/practice/440f16e490a0404786865e99c6ad91c9

#include <stdio.h>
#include <string.h>

//N =a[0]2^0+a[1]2^1 +...a[n]2^n
//N%2 == 1 ->a[0]=1  N/=2 ==1  -- 例如10 0,5 1,2 0,1  15 1,7 1,3 1,1
int main()
{
	int n, count = 0;
	scanf("%d", &n);
	while (n)
	{
		if (n % 2 == 1)
		{
			count++;
		}
		n /= 2;
		if (n == 1)
		{
			count++;
			break;
		}
	}
	printf("%d", count);

	return 0;
}
全部评论
n == 1 似乎没有必要, 1 % 2 也是为1,符合上一个count + 1的条件
点赞 回复 分享
发布于 2022-03-27 21:52

相关推荐

11-26 22:34
已编辑
重庆邮电大学 Java
快手 客户端开发 (n+5)k*16 公积金12
牛客895077908号:佬 什么双非硕啊
点赞 评论 收藏
分享
11-11 14:21
西京学院 C++
无敌混子大王:首先一点,不管学校层次怎么样,教育经历放在第一页靠上位置,第一页看不到教育经历,hr基本直接扔掉了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-27 10:28
点赞 评论 收藏
分享
评论
8
6
分享
牛客网
牛客企业服务