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

2021-07-31 21:31:14 字數 1351 閱讀 5301

(1)&(與)–有0則0;無0則1;

(2)|(或)–有1則1,無1則0;

(3)^(亦或)–相同為0,不同為1;

(4)>>右移(最右邊的位被拋棄)

正數,最左邊添0;00001010>>3=00000001

負數,最左邊添1;10001010>>3=11110001

(5)《左移(最左邊的位被拋棄)–最右邊統一添0;

(正數)00001010<<3=01010000

(負數)10001010<<3=01010000

2.求乙個 數二進位制中1的個數:

方法1:

//迴圈32次

#include

using

namespace

std;

int numberof1(int n)//有符號的n

flag=flag<<1;//左移一位

} return count;

}int main()

方法2:

//迴圈1的個數次

#include

using

namespace

std;

int nemberof1(int n)

return count;

}int main()

測試:

int main()

3.判斷乙個整數是不是2的整數次方

分析:乙個整數如果是2的正數次方,那麼這個正數的二進位制位中只有乙個1;

只需要一句語句就可以判斷:假設這個正數為n:只需判斷n&(n-1)是否為0;

#include

using

namespace

std;

bool fun(int n)

return

true;

}int main()

4.輸入兩個整數m和n,計算需要改變m二進位制中的多少位才能得到n;

如:10:1010;13:1101,則需要改變10的二進位制的後三位才能得到1101;

#include

using

namespace

std;

int changebit(int m,int n)

return count;

}int main()

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

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

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

題目描述 現在夯夯和朱朱餓了,他們想去吃點東西,他們發現店裡東西的 都是2的次方倍 20,21,22 現在夯夯和朱朱想把他們的的錢全都用掉。想知道他們最少能吃多少東西,最多能吃多少東西?輸入格式 多組樣例,每組樣例佔一行,每行乙個整數,代表他們擁有的總錢數。輸出格式 分別回答他們的問題,答案用空格隔...

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

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