首页 > 代码库 > 求一个整数的二进制中1的个数

求一个整数的二进制中1的个数

题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。

假设该整数为i。首先i和1做与运算,判断i的最低位是不是为1。接着把1左移一位得到2,再和i做与运算,就能判断i的次高位是不是1……这样反复左移,每次都能判断i的其中一位是不是1。基于此,我们得到如下代码

int NumberOf1_Solution(int i){      int count = 0;      unsigned int flag = 1;      while(flag)      {            if(i & flag)                  count ++;            flag = flag << 1;      }      return count;}