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;

これにより、2番目のオペランドがビット単位で反転されます(1は0になり、その逆も同様です)。この後、ビット単位で使用します。これは、ビットマスクを使用して呼び出されることがよくあります。

于 2013-03-08T18:07:46.740 に答える
6

ビット単位の否定でビット単位のANDを実行できるはずです。

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

2番目のオペランドの補数のビットごとのANDが必要です。

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