C-Operatoren zur Bitmanipulation
Die bitweisen Operatoren führen bitweise AND (&)-, bitweise exklusive OR (^)- und bitweise inklusive OR (|)-Operationen aus.
Syntax
AND-expression:
equality-expressionAND-expression & equality-expression
exclusive-OR-expression:
AND-expressionexclusive-OR-expression ^ AND-expression
inclusive-OR-expression:
exclusive-OR-expressioninclusive-OR-expression | exclusive-OR-expression
Die Operanden für bitweise Operatoren müssen Ganzzahltypen aufweisen, aber ihre Typen können unterschiedlich sein. Diese Operatoren führen die üblichen arithmetischen Konvertierungen aus. Der Typ des Ergebnisses ist der Typ der Operanden nach der Konvertierung.
Die bitweisen C-Operatoren sind im Folgenden beschrieben:
Operator |
Beschreibung |
---|---|
& |
Der bitweise AND-Operator vergleicht jedes Bit seines ersten Operanden mit dem entsprechenden Bit seines zweiten Operanden. Wenn beide Bits 1 sind, wird das entsprechende Ergebnisbit auf 1 festgelegt. Andernfalls wird das entsprechende Ergebnisbit auf 0 (null) festgelegt. |
^ |
Der bitweise exklusive OR-Operator vergleicht jedes Bit seines ersten Operanden mit dem entsprechenden Bit seines zweiten Operanden. Wenn ein Bit 0 (null) und das andere Bit 1 ist, wird das entsprechende Ergebnisbit auf 1 festgelegt. Andernfalls wird das entsprechende Ergebnisbit auf 0 (null) festgelegt. |
| |
Der bitweise inklusive OR-Operator vergleicht jedes Bit seines ersten Operanden mit dem entsprechenden Bit seines zweiten Operanden. Wenn jedes Bit 1 ist, wird das entsprechende Ergebnisbit auf 1 festgelegt. Andernfalls wird das entsprechende Ergebnisbit auf 0 (null) festgelegt. |
Beispiele
Diese Deklarationen werden für die folgenden drei Beispiele verwendet:
short i = 0xAB00;
short j = 0xABCD;
short n;
n = i & j;
Das Ergebnis, das n in diesem ersten Beispiel zugewiesen wird, entspricht i (0xAB00 hexadezimal).
n = i | j;
n = i ^ j;
Der bitweise inklusive OR-Operator im zweiten Beispiel ergibt den Wert 0xABCD (hexadezimal), während der bitweise exklusive OR-Operator im dritten Beispiel 0xCD (hexadezimal) zurückgibt.
Microsoft-spezifisch
Die Ergebnisse der bitweisen Operationen für ganze Zahlen mit Vorzeichen hängen gemäß ANSI C-Standard von der jeweiligen Implementierung ab. Für den Microsoft C-Compiler funktionieren bitweise Operationen für ganze Zahlen mit Vorzeichen genauso wie bitweise Operationen für ganze Zahlen ohne Vorzeichen. So kann beispielsweise -16 & 99 binär ausgedrückt werden als
11111111 11110000
& 00000000 01100011
_________________
00000000 01100000
Das Ergebnis der bitweisen AND-Operation ist 96 dezimal.
Ende Microsoft-spezifisch