例:
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;
これにより、2番目のオペランドがビット単位で反転されます(1は0になり、その逆も同様です)。この後、ビット単位で使用します。これは、ビットマスクを使用して呼び出されることがよくあります。
ビット単位の否定でビット単位のANDを実行できるはずです。
result = val1 & ~val2;
2番目のオペランドの補数のビットごとのANDが必要です。
int fun(int x, int y)
{
return x & ~y;
}