输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
1. 使用库函数
转换为二进制,后统计其中1的数量。
public class Solution {
public int NumberOf1(int n) {
int result=0;
char[] cs=Integer.toBinaryString(n).toCharArray();
for(char c:cs){
if(c=='1'){
result++;
}
}
return result;
}
}
2. 每次判断最低位是否为1
public class Solution {
public int NumberOf1(int n) {
int count=0;
while(n!=0){
count+=n&1;
n=n>>>1;
}
return count;
}
}
3. n&(n-1)运算
n&(n-1)每次会把右边的1变为0。
public class Solution {
public int NumberOf1(int n) {
int count=0;
while(n!=0){
n=n&(n-1);
count++;
}
return count;
}
}