题目描述:

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

知识点:

  • 位运算

解题思路:

  • 这道题给我们一个数要求我们求其中1的个数
  • 我们可以使用&与运算符,其特点是全1为1,见0为0
  • 我们使用位运算每次消掉一个1即:n = n & (n - 1)
  • 创建一个变量统计最后消掉1的个数便好

解题代码:

  1. function NumberOf1(n)
  2. {
  3. // write code here
  4. let count = 0;
  5. while(n) {
  6. n = n & (n - 1);
  7. count++
  8. }
  9. return count;
  10. }