《剑指offer》学习笔记_面试题15_二进制中1的个数

《剑指offer》学习笔记_面试题15_二进制中1的个数

  •     1.解法1

int NumberOf1(int n){
        int count = 0;
        unsigned int flag = 1;
        while(flag){//当flag中的1移到越界后,flag值会转变为0
            //当n&flag不为0时,表示当前flag中1对应的位置不为0
            if(n&flag)count++;
            flag = flag<<1;
        }
        return count;
    }
  •     2.解法2

    int NumberOf1(int n){
        int count=0;
        while(n){
            count++;
            n = n&(n-1);
        }
        return count;
    }