N11 該數二進位制表示中1的個數

2022-04-29 00:51:07 字數 822 閱讀 5213

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

package new_offer;

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

* @author sonya

* */

public class n11_numberof1

return count;

}/**

* 如果乙個整數不為0,那麼這個整數至少有一位是1。

* 如果我們把這個整數減1,那麼原來處在整數最右邊的1就會變為0,

* 原來在1後面的所有的0都會變成1(如果最右邊的1後面還有0的話)。其餘所有位將不會受到影響。

* 舉個例子:乙個二進位制數1100,從右邊數起第三位是處於最右邊的乙個1。

*減去1後,第三位變成0,它後面的兩位0變成了1,而前面的1保持不變,因此得到的結果是1011.

*我們發現減1的結果是把最右邊的乙個1開始的所有位都取反了。

*這個時候如果我們再把原來的整數和減去1之後的結果做與運算,

*從原來整數最右邊乙個1那一位開始所有位都會變成0。

*如1100&1011=1000.也就是說,把乙個整數減去1,再和原整數做與運算,會把該整數最右邊乙個1變成0.

*那麼乙個整數的二進位制有多少個1,就可以進行多少次這樣的操作。

* @param n

* @return

*/public int numberof1_2(int n)

return count;

} public static void main(string args)

}

1的二進位制表示

我們已經知道計算機中,所有資料最終都是使用二進位制數表達。我們也已經學會如何將乙個10進製數如何轉換為二進位制數。不過,我們仍然沒有學習乙個負數如何用二進位制表達。比如,假設有一 int 型別的數,值為5,那麼,我們知道它在計算機中表示為 00000000 00000000 00000000 000...

二進位制表示中1的個數

28.整數的二進位制表示中1的個數 運算 題目 輸入乙個整數,求該整數的二進位制表達中有多少個1。例如輸入10,由於其二進位制表示為1010,有兩個1,因此輸出2。分析 這是一道很基本的考查位運算的面試題。包括微軟在內的很多公司都曾採用過這道題。如果位數只有八位,使用查表法時間複雜度只有o 1 co...

二進位制表示中 1 的個數

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。需要注意的是 右移運算子是將乙個二進位制數按指定移動的位數向右移動。移動過程中,正數最高位補0,負數最高位補1,無符號數最高位補0。因此 右移整數,遇到負數的測試序列會導致陷入死迴圈 if n 1 1 n n 1 考慮左移 1,按位與...