求int型資料在記憶體中儲存時1的個數

2021-07-03 12:59:07 字數 748 閱讀 2901

1.求int型資料在記憶體中儲存時1的個數

輸入乙個int型資料,計算出該int型資料在記憶體中儲存時1的個數。

我們很容易想到如下方法:

#include using namespace std;

int main()

cout<

在對**進行測試時輸入負數無法得出結論,下面的方法將解決這一問題。

#include using namespace std;

int getcount(int n)

return m;

}int main()

{ int a;

cin>>a;

cout<

如果我們把這個整數減去1,那麼原來處在整數最右邊的1就會變成0,原來在1後面的所有 的0都會變成1。其餘的所有位將不受到影響。舉個例子:乙個二進位制數1100,從右邊數起的第三位是處於最右邊的乙個1。減去1後,第三位變成0,它後面 的兩位0變成1,而前面的1保持不變,因此得到結果是1011。

我們發現減1的結果是把從最右邊乙個1開始的所有位都取反了。這個時候如果我們再把原來的整數和減去1之後的結果做與運算,從原來整數最右邊乙個1那一位 開始所有位都會變成0。如1100&1011=1000。也就是說,把乙個整數減去1,再和原整數做與運算,會把該整數最右邊乙個1變成0。那麼 乙個整數的二進位制有多少個1,就可以進行多少次這樣的操作。

例如上面中-10,在32位機中表示為1111111111111111 1111111111110110,所以1的個數為30.

求int型資料在記憶體中儲存時1的個數

輸入乙個int型資料,計算出該int型資料在記憶體中儲存時1的個數。輸入描述 輸入乙個整數 int型別 輸出描述 這個數轉換成2進製後,輸出1的個數 includeusing namespace std int c1 0x55555555 int c2 0x33333333 int c3 0x0f0...

華為OJ 求int型資料在記憶體中儲存時1的個數

求int 型資料在記憶體中儲存時 1的個數 輸入乙個int 型資料,計算出該 int型資料在記憶體中儲存時 1的個數。輸入描述 輸入乙個整數 int型別 輸出描述 這個數轉換成 2進製後,輸出 1的個數 輸入例子 5 輸出例子 2 解答 include include include include...

華為OJ 求int型資料在記憶體中儲存時1的個數

描述 輸入乙個int型資料,計算出該int型資料在記憶體中儲存時1的個數。知識點字串,查詢 執行時間限制 10m記憶體限制 128輸入 輸入乙個整數 int型別 輸出這個數轉換成2進製後,輸出1的個數 樣例輸入 5樣例輸出 2 思路 如果整數n的二進位制中有k個1,則需要迴圈k次,方法是不斷清除二進...