CI5 1 二進位制置位

2021-06-16 12:36:54 字數 559 閱讀 2324

給定兩個32位的數,n和m,還有兩個指示位的數,i和j。 寫程式使得n中第i位到第j位的值與m的值相同(即:m變成n的子串且位於n的第i位和第j位之間)

例子:輸入: n = 10000000000, m = 10101, i = 2, j = 6

輸出: n = 10001010100

思路:使用乙個mask,該mask的j+1位到最高位都為1,i位到j位都為0,0位到i-1位都為1。將n和mask進行與運算,得到的結果是將n的i位到j位清零。然後將該結果和m左移i位的結果進行或運算,得到最終結果。

#include #include using namespace std;

int updatebits(int n, int m, int i, int j)

void print(int n)

for (int i = v.size() - 1; i >=0; --i)

cout << v[i];

cout << endl;

}int main()

return 0;

}

二進位制位運算

與運算,6 3 2 或運算 6 3 7 異或運算 6 3 5 反碼 6 7 左移 3 2 12 3 2 2 12 右移 3 1 1 3 2 1 無符號右移 3 1 1 3 2 1 按位與,當兩位同時為1時才為1如 1 1 1 1 0 0 0 1 0 6 3相當於 0110 0011 0010 2 按...

更新二進位制位

問題描述 給出兩個32位的整數n和m,以及兩個二進位制位的位置i和j。寫乙個方法來使得n中的第i到j位等於m m會是n中從第i為開始到第j位的子串 日期 2017 8 22 思路 由於題目的提示中已經給出,i到j有足夠的空間放置m,將n中的第i到j之間的數字全部置為0,最後與m異或即可 includ...

二進位制位運算

一 按位與 位全為1,結果才為1 0 0 0 0 1 0 1 0 0 1 1 1 特殊用法 清零。如果想將乙個單元清零,就是使其全部二進位制位為0,只要與乙個各位都為零的數值相與,結果為零 取乙個數中的指定位。如x 10101110要取x的低4位,用x 00001111 00001110即可 二 按...