输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
位运算:与、或、异或、左移(<<)、右移(>>)。
m<<n:表示m左移n位,左移n时,最左边的n位被丢弃,同时在最右边补上n个0.
m>>n:表示m右移n位,若数字为无符号数值,则用0填补最左边的n位,若数字为有符号数值,则用数字的符号位填补最左边的n位,正数用0填补,负数用1填补。
class Solution {
public:
int NumberOf1(int n) {
int count=0;
while(n)
{
count++;
n=n&(n-1);
}
return count;
}
};