求乙個數的二進位制中1的個數(補碼形式下)

2021-08-03 11:06:14 字數 910 閱讀 9546

對於求乙個數的二進位制補碼中1的個數,本文中的**都通過寫乙個函式實現。

一共有三種實現方法。

1、無法處理負數的一種**

#define _crt_secure_no_deprecate

#define _crt_secure_no_warnings 1

#include#includeint geshu(int a)

} return count; }

int main()

2、

利用num&(num-1)的一種演算法,可以實現對負數的求解

#define _crt_secure_no_deprecate

#define _crt_secure_no_warnings 1

#include#includeint geshu(int a)

return count;

}int main()

3、利用按位與1再右移的方法,同樣能夠實現對負數的處理

#define _crt_secure_no_warnings 1

#include#includeint geshu(int a)

a = a >> 1;

} return count;

}int main()

4、結果

第一種方法只能處理正數,第二種和第三種方法可以處理負數,正數與負數的示例結果圖分別如下:

求乙個數的二進位制數中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 使用...