题目描述[原题链接][https://www.acwing.com/problem/content/25/]
输入一个32位整数,输出该数二进制表示中1的个数。
注意:
- 负数在计算机中用其绝对值的补码来表示。
样例1
1 | 输入:9 |
样例2
1 | 输入:-2 |
算法描述
经典题型,首先构造一个lowerbit(int x)
函数,高效的位运算能迅速找到1
的个数,特别是位数特别多的时候体现的,要做处理的是,输入的数为负数的时候需要转成对应的补码即(1<<31)+n
即可;
C++代码
1 | class Solution { |
Java代码
1 | class Solution { |