輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。
public class Solution {
public int NumberOf1(int n) {
int count = 0;
//每次循環劃去末尾一個1。
// 1101&1100=1100
//1111&1110=1110
//1000&0111=0
//1011&1010=1010
//n-1 與n相比,n所退位的那位數字之後皆是0,之前的數字與n-1相同,而n-1退位的那一位爲0.
//故n-1&n,會使得n中最末尾的1變成0
while (n != 0) {
++count;
n = (n - 1) & n;
}
return count;
}
}