劍指offer: 二進制中1的個數(位運算)

題目描述

輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。

分析:

可以通過每次與1,判斷最後一位是否爲1,然後右移。移動的次數爲位數,與機器字長有關,可以通過sizeof得出字結束,然後乘以8.

代碼:

int  NumberOf1(int n) {
    if(n==0) return 0;
    int bitLen = sizeof(n)*8;
    int count = 0;
    for(int i=0;i<bitLen;i++){
        if((n & 1) == 1)
            count++;
        n = n>>1;
    }
    return count;
}


發佈了75 篇原創文章 · 獲贊 5 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章