#include <iostream>
using namespace std;
int bitManipulation2(int n, int i) {
return n^(1<<i);
}
int main() {
int t, n, i;
cin >> t;
while (t--) {
cin >> n >> i;
cout << bitManipulation2(n, i) << endl;
}
return 0;
}
上面为第i位的取反
下面代码实现将n的第i位替换为m的第i位
#include <iostream>
using namespace std;
int bitManipulation1(int n, int m, int i) {
int temp=m>>i&1;
if(temp==1)
return n|(temp<<i);
else
{
temp=1;
return n&(~(temp<<i));
}
}
int main() {
int n, m, i, t;
cin >> t;
while (t--) {
cin >> n >> m >> i;
cout << bitManipulation1(n, m, i) << endl;
}
return 0;
}