題目:輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼表示。
分析:首先把輸入的數與 1做位 與 ,判斷n的最低位是否為1,而後将1右移,再與n做位與,判斷右數第二位是否為1。。。。。依次循環,最後判斷出共有多少個1。
class Solution {
public:
int NumberOf1(int n)
{
int count=0;
unsigned int flag = 1;
while (flag)
{
if(n&flag)
{
count++;
}
flag=flag<<1;
}
return count;
}
};