劍指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

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