esempio:come azzerare ogni bit quando nel secondo operando è 1?
1010111110110001
0101011100010010
================
1010100010100001
|0 1
-|----
0|0 1
1|0 0
come fare questa operazione in C++/C++ 11?
esempio:come azzerare ogni bit quando nel secondo operando è 1?
1010111110110001
0101011100010010
================
1010100010100001
|0 1
-|----
0|0 1
1|0 0
come fare questa operazione in C++/C++ 11?
Si può fare un NOT bit a bit e poi e li: a & ~b
Dato:
a = 1010111110110001
b = 0101011100010010
Poi negando b
dà:
~b = 1010100011101101
e fare a & ~b
:
a = 1010111110110001
~b = 1010100011101101
-------------------------
a & ~b = 1010100010100001
semplice:
result = op1 & ~op2;
questo inverte il secondo bit operando (1 diventa 0 e viceversa). Dopo questo usi un bit a bit e. Questo è spesso chiamato usando una maschera di bit.
Si dovrebbe essere in grado di fare un AND bit per bit e la negazione:
result = val1 & ~val2;
Volete un AND bit per bit del complimento del secondo operando.
int fun(int x, int y)
{
return x & ~y;
}