题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
解体思路
1.使用Integer.bitCount() 方法
public int NumberOf1(int n) {
return Integer.bitCount(n);
}
2.n&(n-1) O(logM)时间复杂度,M表示1的个数 该位运算是去除n的位级表示的最低的以为
n :10110100
n-1 :10110011
n&(n-1) :10110000
相关代码:
public class Solution {
public int NumberOf1(int n) {
int cnt = 0;
while(n != 0) {
cnt++;
n &= (n - 1);
}
return cnt;
}
}