题解 | #求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-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
8 6 评论
分享
牛客网
牛客企业服务