[ C語言生活記事 ] 常見函數實作 (2) 輸入整數後,輸出2進位碼有幾個1

函數實作 (2) 輸入整數後,輸出2進位碼有幾個1

基本思路為,先將整數N轉成2進位,在使用一個迴圈慢慢除2,將1的數量做輸出。

ex. N = 10   =  1010 (binary) 

但是除法運算效率很差,除以二的方式可以採用 >> 2 來取代,

bit operation 的效率相較除法高很多,因此我們採用這種方式作實現。

int CalBitNum(int N)
{
    int Sum = 0;
    while( N > 0 )
    {
        if( (N & 1) == 1 )
            ++Sum;
        N >>= 1; //向右位移1意同除2
    }
    return Sum;
}