5

例子:

1010111110110001
0101011100010010
================
1010100010100001

 |0 1
-|----
0|0 1
1|0 0

如何在 c++ /c++11 中执行此操作?

4

4 回答 4

7

您可以按位 NOT 然后 AND 他们:a & ~b

鉴于:

 a     = 1010111110110001
 b     = 0101011100010010

然后否定b给出:

~b     = 1010100011101101

并做a & ~b

 a     = 1010111110110001
~b     = 1010100011101101
-------------------------
a & ~b = 1010100010100001
于 2013-03-08T18:07:39.143 回答
6

简单的:

result = op1 & ~op2;

这将按位反转第二个操作数(1 变为 0,反之亦然)。在此之后,您使用按位与。这通常称为使用位掩码。

于 2013-03-08T18:07:46.740 回答
6

您应该能够使用按位否定进行按位与:

result = val1 & ~val2;
于 2013-03-08T18:07:49.733 回答
4

您想要第二个操作数的补码的按位与。

int fun(int x, int y)
{
    return x & ~y;
}
于 2013-03-08T18:08:09.433 回答