輸入乙個整數,輸出該數32位二進位制表示中1的個數。其中負數用補碼表示。牛客網題目鏈結
我們可以設定乙個無符號整數1
,從低位往高位(1-32
)一直移動,然後與整數對應位置的數字進行比較(與運算),來實現計算1
的個數,**如下:
class
solution
flag<<=1;
//左移一位
}return count;}}
;
占用記憶體:484k
乙個非0
的數n
減去1
的值我們計為tmp
,則n
與tmp
與運算後會得到下乙個出現1
的位置,我們將運算的結果賦給n
,重新計算,這樣的話有多少個1
我們就計算多少次,而不是像思路1
中的計算32
次
如四位二進位制1000
表示8
,而8-1
的四位二進位制表示為0111
,它們與運算的結果為0
,因此,8
的二進位制中只有1
個1
,**如下:
class
solution
return count;}}
;
占用記憶體:484k 求二進位制中1的個數
在 程式設計之美 一書中有一節提到如何求乙個位元組的無符號整型變數二進位制表示中中1的個數,主要提到了四種方法。下面簡單介紹一下 1.求餘法 在將十進位制數轉換為二進位制數時,採用除2取餘法。將每次除2得到的餘數儲存起來逆序輸出便是該十進位制整數的二進位制表示。因此可以採用這種方法去統計1的個數。i...
求二進位制中1的個數
解法有很多種 以乙個位元組無符號位元組變數作為例子 解法一 求餘法 在將十進位制數轉換為二進位制數時,採用除2取餘法。將每次除2得到的餘數儲存起來逆序輸出便是該十進位制整數的二進位制表示。因此可以採用這種方法去統計1的個數。public int count byte n return sum 解法二...
求二進位制中1的個數
這是乙個經常會在筆試和面試中遇到的題目,今天我做到了這個題目,就來分享一下我對這個題目的解決思路。首先拿到這個題目,我們的基本思路是 先判斷最後一位是否為1,接著把數字依次右移,判斷每一位是否為1,直到整數變為0為止。基於這個思路我們可以寫下如下的 int count int n n n 1 ret...