劍指offer 面試題 15 二進位制中1的個數

2021-09-12 19:12:54 字數 511 閱讀 7366

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

初始化無符號整型變數 bit = 1。

迴圈依次將 bit 與 數 做與運算,如果結果為0,則 bit 左移一位;否則計數器 count 加1,同時bit 左移一位; 

當 bit 為 0 時(比如乙個int 型變數佔32位,那麼 bit 左移32次就會變成0,),迴圈停止,返回計數器 count 的值。 

class solution 

bit = bit << 1;

}return count;

}};

在迴圈內,每次數 n 與 數 n-1 做與運算,迴圈幾次就有幾個 1 的個數。

class solution 

return count;

}};

劍指Offer精選程式設計面試題15 二進位制中1的個數

2 思路 3 與測試 要求 輸入乙個整數,輸出該數二進位制表示中1的個數。如輸入9,則輸出2。總體來分三種 思路一弊端 此操作輸入負數的時候容易引發死迴圈,因為負數移位的時候最高位會設為1,容易陷入死迴圈。思路二弊端 此操作的迴圈次數為整數二進位制的位數,為常規解法。思路三優勢 此操作的迴圈次數為整...

劍指offer 面試題15 二進位制中1的個數

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。解決 1.位運算 乙個數減1的結果和它本身進行與運算,等於把這個數的二進位制表示中最右邊的1變成0。public int numberof1 int n return count 2.取巧 使用integer.bitcount int...

劍指offer面試題15 二進位制中1的個數

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。1 可能引起死迴圈的解法 基本思路 先判斷整數二進位制表示中最右邊一位是不是1,接著把輸入的整數右移一位,此時原來處於從右邊數起第二位被移到最右邊了,再判斷是不是1,這樣每移次動一位,知道整個整數變成0為止。那麼,如何判斷乙個整數的最...