如果一個數不為0,那它的二進制數一定含有1
例子:如 n =10
則n=0000…1010, n-1=0000…0111, 相與的結果是0000…1000,
//效果是把原來最右邊的1清除,依次類推
public class Solution {
public int NumberOf1(int n) {
int num = 0;
while (n != 0) {//如果一個數不為0,那它的二進制數一定含有1
num++;//有1是以先+1,再把最右邊的1清除
//若n=0000...1010, n-1=0000...0111, 相與的結果是0000...1000,
//效果是把原來最右邊的1清除,依次類推
n &= (n - 1);
}
return num;
}
}