美文网首页
11:二进制中1的个数

11:二进制中1的个数

作者: iwtbam | 来源:发表于2019-08-03 16:29 被阅读0次

题目描述

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

解题思路

  • n - 1 可以将最低位的1变成0,最低位右边的所有0变为1,比如 1100100 - 1 => 1100011
  • n & (n-1) 可以最低位开始往右所有位置为0,用 n & (n - 1) 更新n,能进行 n & (n - 1) 次数即为 1 的个数。

AC代码

class Solution {
public:
     int  NumberOf1(int n) {
         int num = 0;
         while(n)
         {
             num++;
             n = n & (n - 1);
         }
         return num;
     }
};

相关文章

网友评论

      本文标题:11:二进制中1的个数

      本文链接:https://www.haomeiwen.com/subject/pmgjdctx.html