剑指offer系列:二进制中1的个数

描述

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

代码

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

心得

这道题的灵魂在于 n = n&(n-1)
这个操作会将n这个二进制中最右边的1变成0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章