求出一个正整数转换成二进制后的数字“1”的个数。 
   例:数字23转为二进制为 10111,其中1的个数为4 
                                        int trueBitCount(int a ) {
    // write code here
	int count = 0;
	if (a >= 0)
	{
		while (a)
		{
			if (a & 1) {//可以判断出当前a最后一位是1还是0
				count++;
			}
			a = a >> 1;
		}
	}
	else
	{
		//负数右移,我这个编译器是算术右移(大多数编译器都是算术右移)
		//算术右移就是,最右边数丢弃,左边补符号位,因为是负数也就是补1
		//这里如果还用while(a)就会一直死循环下去,因为左边会一直补1
		//但我们是知道整形是32位存储在内存里面的,我们循环32次即可
		for (int i = 0;i < 32;i++)
		{
			if (a & 1) {//可以判断出当前a最后一位是1还是0
				count++;
			}
			a = a >> 1;
		}
	}
    return count;
} c语言解法
                                                                                    import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String str;
        while ((str = bf.readLine()) != null) {
            int temp = Integer.parseInt(str);
            String s = Integer.toBinaryString(temp);
            char[] chars = s.toCharArray();
            int count = 0;
            for (char aChar : chars) {
                if (aChar == '1') {
                    count++;
                }
            }
            System.out.println(count);
        }
    }
}