二進位制中1的個數(位運算n n 1 )

2021-10-05 16:54:53 字數 514 閱讀 4009

題目描述

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

如果乙個整數不為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,就可以進行多少次這樣的操作。

public

class

solution

return ans;

}}

二進位制中1的個數 (位運算)

題目描述 輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。知識點 1.左移運算子 1 格式 value num num 指定要移動的位數。2 運算規則 按二進位制形式把所有的數字向左移動對應的位數,高位移出 捨棄 低位的空位補零。如果移動的位數超過了該型別的最大位數,那麼編譯器會對...

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

給定乙個長度為n的數列,請你求出數列中每個數的二進位制表示中1的個數。輸入格式 第一行包含整數n。第二行包含n個整數,表示整個數列。輸出格式 共一行,包含n個整數,其中的第 i 個數表示數列中的第 i 個數的二進位制表示中1的個數。資料範圍 1 n 100000,0 數列中元素的值 109 輸入樣例...

查詢二進位制中1的個數 位運算

1 常見位運算符號 2 常用位運算技巧 3 輸入乙個數求該數的二進位制中1的個數 設定乙個迴圈,迴圈32次 因為int型長度是32位,如果long型就迴圈64,類推 每次讓1左移一位,然後和輸入的數進行與運算 和1進行與運算,結果取決於輸入數的二進位制位,是1結果就是1,0結果就是0 再比較 從後往...