位运算

位运算的基本操作

1.求n的二进制表示中第k位是几

(1)先把第k位移到最后一位 n >> k;
(2)看个位是几 n & 1;

#include <bits/stdc++.h>

using namespace std;

int main(){
	int n = 10;
	
	for(int k = 3; k >= 0; k--) cout << (n >> k & 1);
	
	return 0;
}
输入:10
输出:1010

2.返回n的最后一位1

lowbit(x):返回x的最后一位1
x = 1010,lowbit(x) = 10;
x = 101000, lowbit(x) = 1000;

#include <bits/stdc++.h>

using namespace std;

int lowbit(int x){
	return x & -x;
}

int main(){
	int n;
	cin >> n;
	
	while(n--){
		int x;
		cin >> x;
		
		int res = 0;
		while(x) x -= lowbit(x), res++;  //每次去掉x的最后一位1 
		
		cout << res << ' ';
	}

	return 0;
}
posted @ 2022-11-30 13:51  csai_H  阅读(39)  评论(0)    收藏  举报