求int型正整数在内存中存储时1的个数(二进制中1的个数)
程序员文章站
2022-03-06 23:00:03
...
求int型正整数在内存中存储时1的个数(二进制中1的个数)
题目描述
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
输入描述:
输入一个整数(int类型)
输出描述:
这个数转换成2进制后,输出1的个数
示例1
输入
5
输出
2
C++
- 一个数n,与n-1相与,会使得n的二进制表示中最后一个1变为0
- 只要计算n&(n-1)的次数,就是其二进制表示中1的个数
#include<cstdio>
int main(){
int n,cnt;
scanf("%d",&n);
while(n!=0){
n=n&(n-1);
cnt++;
}
printf("%d\n",cnt);
return 0;
}