题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
public class Solution {
public int NumberOf1(int n) {
int count = 0;//二进制中1的个数
while(n!= 0){
count++;//如果1个整数不为0,那么它的二进制最起码有1个1
n = n & (n - 1);//n&(n-1)实现将n的最右边一个1去掉;
}
return count;
}
}
tips:
非零整数减1,那么原来处在整数二进制最右边的1就会变为0,原来在1后面的所有0都会变成1,其余所有位将不会受到影响。
来源:CSDN
作者:ColaCrisps
链接:https://blog.csdn.net/ColaCrisps/article/details/104244440