求乙個整數儲存在記憶體中的二進位制中的1的個數

2021-10-01 03:57:47 字數 764 閱讀 7130

求乙個整數儲存在記憶體中的二進位制中的1的個數

方法1.利用數字遍歷的方式(相除和取模/n,

%n)#include

#include

void

onenumber

(int n)

printf

("%d\n"

, count);}

intmain()

方法1只能確定正整數中二進位制中1的個數

執行結果:

方法2.利用按位操作來實現

#include

intmain()

}printf

("%d\n"

, count)

;system

("pause");

return0;

}

執行結果:

方法3

(效率最高, 其運算次數與輸入n的大小無關,只與n中1的個數有關)

//n & n - 1能清除n最右邊的1

#include

#include

intmain()

printf

("%d\n"

, count)

;system

("pause");

return0;

}

執行結果:

C語言之求乙個整數儲存在記憶體中的二進位制中1的個數

求乙個整數儲存在記憶體中的二進位制中1的個數 三種方法 define crt secure no warnings 1 include intmain printf 二進位制中1的個數 d n count return0 define crt secure no warnings 1 include...

四種方法求乙個整數儲存在記憶體中的二進位制中1的個數

1 int num int n n n 2 return count int main 這個 是存在一定問題的。倘若要求 1儲存在記憶體中二進位制1的個數,用該段 列印出來的結果為0,但我們都知道 1在記憶體中是以補碼的形式儲存的,整型的話就有32個1。若將nt num int n 改為int nu...

求逆轉乙個整數的二進位制表示

解法一 這個容易理解。cpp view plain copy 解法一 define unsigned bits count 32 unsigned int bitrev3 unsigned intinput 我的格式,先不考慮符號問題 int reverse int n return ret 解法二...