程序设计实习 02 第i位替换

#include <iostream>     //n 的第i位替换为m的第i位
using namespace std;

int bitManipulation1(int n, int m, int i) {
    return ((m>>i)&1) == 1?  (n|(1<<i)) : (n&(~(1<<i)));  //注意格式
    }

int main() {
    int n, m, i, t;
    cin >> t;
    while (t--) { 
        cin >> n >> m >> i;
        cout << bitManipulation1(n, m, i) << endl;
    }
    return 0;
}

 

#include <iostream>    // n的第i位取反
using namespace std;

int bitManipulation2(int n, int i) {
    return (n>>i)&1 ==1?    (n&(~(1<<i))) : (n|(1<<i));
}

int main() {
    int t, n, i;
    cin >> t;
    while (t--) {
        cin >> n >> i;
        cout << bitManipulation2(n, i) << endl;
    }
    return 0;
}
#include <iostream>     //左边i位取反
using namespace std;

int bitManipulation3(int n, int i) {
    return ((~0)<<(32-i))^n;
    
}
int main() {
    int t, n, i;
    cin >> t;
    while (t--) {
        cin >> n >> i;
        cout << bitManipulation3(n, i) << endl;
    }
    return 0;
}

 

posted @ 2018-03-05 13:56  Latticeeee  阅读(179)  评论(0编辑  收藏  举报