例子:
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 然后 AND 他们: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;
}