描述
输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。
示例1
输入:
10
返回值:
2
Solutions
- 求解整数二进制,然后统计1的个数
- 使用mark=0x01进行与操作,然后右移mark一位继续与操作,直到mark等于0为止
- 举个例子val=10011,val-1=10010,val&(val-1)=10010…val-1=10001,val&(val-1)=10000
public class Solution {
public int NumberOf1(int n) {
int count=0;
int temp=n;
while(temp!=0){
count++;
temp=temp&(temp-1);
}
return count;
}
}