1010111110110001
0101011100010010
================
1010100010100001
|0 1
-|----
0|0 1
1|0 0
如何做到在C++/C++ 11這個操作?
1010111110110001
0101011100010010
================
1010100010100001
|0 1
-|----
0|0 1
1|0 0
如何做到在C++/C++ 11這個操作?
你可以做一個位NOT,然後與他們:a & ~b
考慮:
a = 1010111110110001
b = 0101011100010010
然後否定b
給出:
~b = 1010100011101101
,做a & ~b
:
a = 1010111110110001
~b = 1010100011101101
-------------------------
a & ~b = 1010100010100001
簡單:
result = op1 & ~op2;
此反轉第二個操作數逐位(1變爲0,反之亦然)。之後你使用一個按位和。這通常使用位掩碼來調用。
你應該能夠做到的位與按位否定:
result = val1 & ~val2;
你想第二個操作數的恭維的位與。
int fun(int x, int y)
{
return x & ~y;
}