求乙個數的二進位制中1的個數 (n種解法詳述)

2021-08-27 06:27:31 字數 896 閱讀 3289

今天研究了乙個有趣的演算法,而且還牽連了很多其他知識,這個問題倒是很簡單。

問題:求乙個數的二進位制中1的個數

方法1:

public class yiwei 

n = n >> 1;

} return count;

}}

方法2:

public class yiwei 

flag = flag << 1;

i++;

} if ((flag & n) > 0)

);.length() );

return count;

}}

方法3:

public class yiwei 

return count;

}}

方法4:

public class yiwei 

count = s.length();// 此時的字串s裡面存的全是1,求一下length即可知道1的個數

return count;

}}

這道題牽連到的問題:

1.正數 : 原碼 = 反碼= 補碼

2.負數 : 反碼 = (除符號位)按位取反,補碼 = 反碼 + 1

3.0的補碼是0,並且唯一

4.+0的原碼 = 0000 0000b

- 0的原碼 = 1000 0000b

5. 與運算: n & (n-1) 的特點;n & flag 的結果;1&1=1,其他為0

6. 移位操作:左移(*2) ,右移(/2)

7.integer類提供的tobinary方法

8.stringbuilder類提供的字串處理方法

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

求乙個數的二進位制數種1的個數 author administrator public class countoneinbinarynum num 2 system.out.println count 解法2 將解法一的除法變為位移運算 public void z2 1 method2 int nu...

二進位制 求乙個數的二進位制表示中1的個數

題目 求乙個正整數x中1的個數 思考 二進位制是乙個01串。統計該串中1的個數。方法1 將x按照樸素的方法轉化成二進位制串,如果x的某二進位制位上為1,則res 求得最後x中1的個數。int x while x return res res即是x的二進位制數中1的個數用這種方法求,時間複雜度為o n...

求乙個數字二進位制中 1 的個數

任意給定乙個 32 位無符號的整數 n,計算 n 的二進位制表示中 1 的個數,比如 n 3 011 時,返回 2 通過移位解決,每次向右移一位 1 然後判斷最後一位是不是 1 1 最多迴圈 32 次 int bitcount unsigned int n n n 1 return count 使用...