题解 | #二进制中1的个数#
二进制中1的个数
http://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8
F1.利用
import java.util.*;
public class Solution {
    public int NumberOf1(int n) {
    	//定义计数变量
        int count = 0;
        //循环
        while (n != 0){
            //由于1的前31位都为0,最后一位为1,和n这个数字做与运算可以判断n的最后一位是0还是1,如果为1就计数
            count += n&1;
            //每次判断完之后,n无符号右移一位,(注意不能为有符号右移,有符号右移高位补1,会造成死循环)
            n >>>= 1;
        }
        return count;
    }
}
F2.为了避免右移操作时不注意使用了有符号右移的操作;
import java.util.*;
public class Solution {
    public int NumberOf1(int n) {
        int count = 0;
        for (int i = 0; i < 32; i++) {
            count += n&1;
            n >>= 1;
        }
        return count;
    }
}
F3.使用java自带的api
import java.util.*;
public class Solution {
    public int NumberOf1(int n) {
       return Integer.bitCount(n);
    }
}

