题解 | #二进制中1的个数#
二进制中1的个数
https://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8
public class Solution {
public int NumberOf1(int n) {
//输出二进制中1的个数
//遍历每一位,从右开始遍历,判断完,向右移
//负数用补码表示
// int count = 0;
// while(n != 0){
// if((n & 1) == 1){
// count++;
// }
// n = n >>> 1;
// }
// return count;
//巧用n&(n-1)
//n&(n-1)能将最后一位的1变成0
int count = 0;
//注意,不能用n > 0, 因为n可能为负数
while(n != 0){
count++;
n &= n-1;
}
return count;
}
}

查看11道真题和解析