Beispiel:Wie wird jedes Bit zerlegt, wenn der zweite Operand 1 ist?
1010111110110001
0101011100010010
================
1010100010100001
|0 1
-|----
0|0 1
1|0 0
wie in C++/C++ 11 diesen Vorgang zu tun?
Beispiel:Wie wird jedes Bit zerlegt, wenn der zweite Operand 1 ist?
1010111110110001
0101011100010010
================
1010100010100001
|0 1
-|----
0|0 1
1|0 0
wie in C++/C++ 11 diesen Vorgang zu tun?
Sie können eine bitweise nicht und dann UND sie: a & ~b
Gegeben:
a = 1010111110110001
b = 0101011100010010
Dann b
negiert gibt:
~b = 1010100011101101
und tun a & ~b
:
a = 1010111110110001
~b = 1010100011101101
-------------------------
a & ~b = 1010100010100001
einfach:
result = op1 & ~op2;
dies den zweiten Operanden bitweise invertiert (1 zu 0 und umgekehrt). Danach verwenden Sie ein bitweises und. Dies wird oft mit einer Bitmaske aufgerufen.
sollten Sie in der Lage sein, eine bitweise UND mit dem bitweise Negation zu tun: UND-Verknüpfung des Kompliment des zweiten Operanden
result = val1 & ~val2;
Sie eine bitweise möchten.
int fun(int x, int y)
{
return x & ~y;
}