示例:
1010111110110001
0101011100010010
================
1010100010100001
|0 1
-|----
0|0 1
1|0 0
如何在c ++ / c ++ 11中执行此操作?
答案 0 :(得分:7)
你可以做一个按位NOT然后AND它们:a & ~b
假设:
a = 1010111110110001
b = 0101011100010010
然后否定b
给出:
~b = 1010100011101101
并且正在执行a & ~b
:
a = 1010111110110001
~b = 1010100011101101
-------------------------
a & ~b = 1010100010100001
答案 1 :(得分:6)
简单:
result = op1 & ~op2;
这会按位反转第二个操作数(1变为0,反之亦然)。在此之后你使用按位和。这通常使用位掩码调用。
答案 2 :(得分:6)
您应该能够按位否定执行按位AND:
result = val1 & ~val2;
答案 3 :(得分:4)
你想要第二个操作数的补码的按位AND。
int fun(int x, int y)
{
return x & ~y;
}