1. 程式人生 > >劍指offer-10.求一個數中二進制格式中1的個數

劍指offer-10.求一個數中二進制格式中1的個數

clas 分析 又是 題目 補碼 off number 替換 一個數

0 題目

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

1 分析

一個數除2,余數為1,那麽表示二進制中含有一個1。

因此可以使用循環,依次判斷。

但是除法效率底,這裏又是除2,因此可以使用位運算實現除2

2實現

int NumberOf1(int n)
{
    unsigned int flag = 1;
    int counts = 0;
    while (flag)
    {
        if (flag & n)//替換判斷最後一位是否為1
        {
            ++counts;
        }
        flag = flag << 1;
    }
    return counts;
}

  

劍指offer-10.求一個數中二進制格式中1的個數