面试题10:二进制中1的个数
题目描述
请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2。
题目分析
剑指Offer(纪念版)P78
代码实现
常规解法
int NumberOf1_Solution1(int n) { int count = 0; unsigned int flag = 1; while(flag) { if(n & flag) count ++; flag = flag << 1; } return count; }
能给面试官带来惊喜的解法
int NumberOf1_Solution2(int n) { int count = 0; while (n) { ++ count; n = (n - 1) & n; } return count; }