题解 | #二进制中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; } }