11 二級制中1的個數

2021-09-19 19:02:38 字數 553 閱讀 4014

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

計算機中資料儲存形式位二進位制位,正數以原碼形式儲存,負數以補碼形式儲存。int型別資料,佔4個位元組,乙個位元組8位,所以int型別佔32個二進位制位。

對於負數求二進位制位,需要先求出其對應的正數的二進位制位。

比如:-5對應的正數5的二進位制原碼為,00000101   完整形式為00000000 00000000 00000000 00000101

-5對應的正數5的二進位制反碼為,11111010    完整形式為 11111111  11111111  11111111   11111010

-5對應的正數5的二進位制補碼=反碼+1,        完整形式為   11111111  11111111  11111111   11111011

思路:每次將32位的每乙個位依次置為1,和n相與,如果結果為1,表示這個位置為1,否則為0。

class solution 

flag=flag<<1;

}return number;

}};

二級制中1的個數包含負數(去掉二進位制中最右邊的1)

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。1 class solution 9return sum 10 11 如果乙個整數不為0,那麼這個整數至少有一位是1。如果我們把這個整數減1,那麼原來處在整數最右邊的1就會變為0,原來在1後面的所有的0都會變成1 如果最右邊的1後面還...

11 二進位制中1的個數

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

11 二進位制中1的個數

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。先明白幾個概念,其實和這道題關係不大 原碼 乙個數按絕對值大小轉換成的二進位制數 反碼 將原碼的二進位制數按位取反,得到的新二進位制數 補碼 反碼 1稱為補碼 例 5 另外,負數以正數的補碼形式表示。思路 運算 拿紙寫一下,乙個數n的...