11 二進位制中1的個數

2021-10-06 22:04:42 字數 586 閱讀 5868

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

先明白幾個概念,其實和這道題關係不大

原碼:乙個數按絕對值大小轉換成的二進位制數;

反碼:將原碼的二進位制數按位取反,得到的新二進位制數;

補碼:反碼+1稱為補碼;

例:5

另外,負數以正數的補碼形式表示。

思路:&運算

拿紙寫一下,乙個數n的二進位制,比如5–0101,和n-1的二進位制–0100做&運算,結果為0100,消掉了乙個1(消掉了最右邊的乙個1),再次做&運算

0100 & 0011–0000,等於0結束,進行了兩次&運算,5的二進位制中1的個數就是2.

【描述起來有點亂,但自己寫一下應該非常清除】

**

public

class

solution

return count;

}}

11 二進位制中1的個數

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。如果乙個整數不為0,那麼這個整數至少有一位是1。如果我們把這個整數減1,那麼原來處在整數最右邊的1就會變為0,原來在1後面的所有的0都會變成1 如果最右邊的1後面還有0的話 其餘所有位將不會受到影響。舉個例子 乙個二進位制數1100,...

二進位制 二進位制中1的個數

題目 請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中 1 的個數。例如,把 9 表示成二進位制是 1001,有 2 位是 1。因此,如果輸入 9,則該函式輸出 2。示例 1 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 0000000...

二進位制中1的個數 二進位制中0的個數

1 題目 實現乙個函式,輸入乙個整數,輸出該數二進位制表示中1的個數,例如把9表示成二進位制是1001,有2位是1。因此如果輸入9,該函式輸出2。2 解法 解法 一 可能會引起死迴圈的解法 基本思路 先判斷整數二進位制表示中最右邊一位是不是1。接著把輸入的整數右移一位,此時原理處於從右邊數起的第二位...