VIRTUALS

the virtual labs for the virtuals

0%

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

摘要:
二进制中1的个数,老入门题了。

题目

描述
输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 $1$ 的个数。

输入描述:
输入一个整数(int 类型)

输出描述:
这个数转换成 $2$ 进制后,输出 $1$ 的个数

示例1

输入:
5

输出:
2

lowbit

lowbit 返回二进制数中最低位的 $1$ 及后面的 $0$(所构成的数)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/*
* author: etoa
* 2021-08-19 09:51:30
*/
#include <bits/stdc++.h>

using namespace std;

inline int64_t lowbit(int64_t x)
{
return x & -x;
}

int main()
{
cin.tie(nullptr)->sync_with_stdio(false);
int n;
cin >> n;
int res = 0;
for (; n; n -= lowbit(n)) {
res++;
}
cout << res << endl;
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 
* author: etoa
* 2021-08-19 09:54:31
*/
import java.util.*;

public class Main {
private static long lowbit(long x) {
return x & -x;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int res = 0;
for (; n != 0; n -= lowbit(n)) {
res++;
}
System.out.println(res);
}
}