题目:实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如,把9的二进制表示成二进制是1001,有2位是1,所以如果输入9,则函数输出2。
🐶常规解法:
🐱代码流程详解:
- 输入数与1进行位运算,如果输入数的二进制的最后一位是1,满足n&flag不是0的条件,此时count++
- 然后flag左移一位,依次判断输入数二进制第二位是不是1,以此类推……
- 当flag从10000000左移00000000时,退出循环,输出结果
🐰能给面试官带来惊喜的解法
🐻代码思路详解:
- 这个代码有关一个规律,一个数减去1后与另一个数进行与运算,会使得这个数的1往左移一位,类似于左移运算符。
- 比如某个数的二进制位:1100,我让这个数减去1,则新的数的二进制数是1011,再让这两个数进行与运算,其结果是1000。