一、网址链接
牛客----https://www.nowcoder.com/ta/huawei
二、题目描述
①描述
输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。数据范围:保证在 32 位整型数字范围内
②输入描述
输入一个整数(int类型)
③输出描述
这个数转换成2进制后,输出1的个数
④示例一
输入: 5
输出: 2
⑤示例二
输入: 0
输出: 0
三、代码实现
①Java代码实现
import java.util.Scanner;
public class Main {
public static void main (String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int n = scanner.nextInt();
char[] num = Integer.toBinaryString(n).toCharArray();
int count = 0;
for (int i = 0;i < num.length; i++) {
if ( num[i] == '1') {
count++;
}
}
System.out.println(count);
}
}
}
②C++代码实现
#include<bitset>
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
bitset<32>b(n);
cout<<b.count()<<endl;
}
③C代码实现
#include<stdio.h>
int main () {
int n,count=0;
scanf("%d",&n);
while (n != 0) {
if (n%2==1) {
count++;
}
n/=2;
}
printf("%d",count);
return 0;
}