11.二进制中一的个数

二进制中一的个数

题目链接

题目描述

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

巧用位运算

n &= n-1的作用:消去n最低位的1。例子:当n=1010时,n-1=1001,此时n & n-1= 1000,达到了使二进制最低位的1变成0的效果。要想知道二进制中有多少个1,可以理解为要消去多少次最低位的1,记录次数即可。

时间复杂度O(logn)

class Solution {
public:
     int  NumberOf1(int n) {
         int cnt = 0;
         while (n != 0)
         {
             n &= (n - 1);
             cnt++;
         }
         return cnt;
     }
};
发布了69 篇原创文章 · 获赞 28 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/WxqHUT/article/details/104455190