二進位制數中1的個數

2021-09-10 02:28:03 字數 843 閱讀 5471

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

思路:在平時的學習中感受不到位運算的精妙,但是在一些演算法處理和效率問題上位運算卻提供了很好的解決方法,畢竟它是立足於二進位制來處理資料的,最底層的也是效率最高的。  本題的考察重點也是位運算。

通過運算 & 與運算,每次迴圈 ——n=n & (n-1) 會使得每次都會排除乙個1(在草稿紙上多舉幾個例子更加明白,因為二進位制只能取到0  1.這對於負數也是一樣的,但如果只對於正數而言,我們還可以通過 位運算——右移》 1計算1的個數),當通過與運算一定次數之後,n就會全變為0退出迴圈。

public

class

solution

return

count;}}

關於位運算詳解可以在本部落格相關隨筆找到

小插曲:

在看jdk文件時發現,integer有乙個bitcount方法可以直接計算二進位制1的位數,而且還特定標明了有時用於人口普查。

//這裡給出該方法的內部實現23

@hotspotintrinsiccandidate

4public

static

int bitcount(int

i) posted @

2018-08-06 08:11

octopus22 閱讀(

...)

編輯收藏

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

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

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

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

求二進位制數中1的個數

解法一 可以舉乙個八位的二進位制例子來進行分析。對於二進位制操作,我們知道,除以乙個2,原來的數字將會減少乙個0。如果除的過程中有餘,那麼就表示當前位置有乙個1。以10 100 010為例 第一次除以2時,商為1 010 001,余為0。第二次除以2時,商為101 000,余為1。因此,可以考慮利用...