• 二进制中1的个数
    • 题目
    • 解题思路

    二进制中1的个数

    题目

    输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

    解题思路

    1. 负数是补码表示
    2. >>> 为无符号右移,>>为有符号右移,当 n 为负数是会增加多余的1
    1. public int NumberOf1(int n) {
    2. int mask = 0x01;
    3. int res = 0;
    4. int t = n;
    5. while (t != 0) {
    6. if ((t & mask) == 1) {
    7. res++;
    8. }
    9. t = t >>> 1;
    10. }
    11. return res;
    12. }