求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;
}
本文介绍了一种计算int型正整数在内存中存储时1的个数的方法,通过使用位操作技巧,即一个数n与其减一后的数进行与运算,可以有效地减少1的数量,直到所有1都被消除。这种方法可以快速计算出二进制表示中1的总个数。
231

被折叠的 条评论
为什么被折叠?



