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

2021-06-16 07:06:42 字數 532 閱讀 4464

題目:求乙個正整數x中1的個數

思考:二進位制是乙個01串。統計該串中1的個數。

方法1:將x按照樸素的方法轉化成二進位制串,如果x的某二進位制位上為1,則res++.求得最後x中1的個數。

int x;

while(x)

return res;//res即是x的二進位制數中1的個數

用這種方法求,時間複雜度為o(n),其中n為x的位數
方法2:思路同方法一樣,即判斷x的每一位,為1則res++。只是使用位運算來加速。

int x;

int i=0;

while(i<=n)

時間複雜度是o(n)//其中n是=res.此法利用x&(-x)來計算最後乙個1以加速了運算,降低了時間複雜度。

方法4:一種比較高階的各種位運算的做法。詳見maxtrix67的blog。

另外,我看程式設計之美上給出了另外一種猥瑣的方法。。打表。。。哎。。姐不解釋。。程式設計之美啊美啊。。。

二進位制數的表示

吐槽一下,今天網真慢,等了半天才進去 二進位制的表示,先舉個例項吧 一 23用二進位制表示 private sub command1 click dim n as byte n 23 const er as byte 2 dim shang as byte dim yushu 1 to 5 as b...

LintCode 二進位制表示

給定乙個數將其轉換為二進位制 均用字串表示 如果這個數的小數部分不能在 32 個字元之內來精確地表示,則返回 error 樣例 n 3.72 返回 error n 3.5 返回 11.1 題目很簡單,直接上 吧 public class binaryrepresention return res.r...

LintCode 二進位制表示

給定乙個數將其轉換為二進位制 均用字串表示 如果這個數的小數部分不能在 32 個字元之內來精確地表示,則返回 error 您在真實的面試中是否遇到過這個題?yes 樣例n 3.72 返回 error n 3.5 返回 11.1 好久沒做題 有點懵逼 根據資料試出來的 臥槽 public class ...