Zu den Operatoren gehören:
| & | AND (log. UND) |
| &= | AND (log. UND) |
| | | OR (log. ODER) |
| |= | OR (log. ODER) |
| ^ | XOR (log. Exclusiv-ODER) |
| ~ | one's compliment (Einerkomplement) |
| << | Shift Left (Linksschieben) |
| >> | Shift Right (Rechtsschieben) |
| <<= | Shift Left (Linksschieben) |
| >>= | Shift Right (Rechtsschieben) |
Diese Operationen erfordern zwei Operanden und führen Bit-Vergleiche durch.
AND & kopiert ein Bit zum Ergebnis, wenn es in beiden Operanden gesetzt ist.
main()
{
unsigned int a = 60; /* 60 = 0011 1100 */
unsigned int b = 13; /* 13 = 0000 1101 */
unsigned int c = 0;
c = a & b; /* 12 = 0000 1100 */
}
|
OR | kopiert ein Bit zum Ergebnis, wenn es in mind. einem Operand gesetzt ist.
main()
{
unsigned int a = 60; /* 60 = 0011 1100 */
unsigned int b = 13; /* 13 = 0000 1101 */
unsigned int c = 0;
c = a | b; /* 61 = 0011 1101 */
}
|
XOR ^ kopiert ein Bit zum Ergebnis, wenn es in einem (aber nicht beiden!) Operand gesetzt ist.
main()
{
unsigned int a = 60; /* 60 = 0011 1100 */
unsigned int b = 13; /* 13 = 0000 1101 */
unsigned int c = 0;
c = a ^ b; /* 49 = 0011 0001 */
}
|
Dieser Operator ist monadisch (d.h. er benötigt nur einen Operand) und invertiert bitweise (0->1, 1->0).
main()
{
unsigned int Value=4; /* 4 = 0000 0100 */
Value = ~ Value; /* 251 = 1111 1011 */
}
|
Die folgenden
Operatoren werden verwendet, um Bits nach links oder nach rechts zu verschieben.| << | >> | <<= | >>= |
Der Wert des linken Operanden wird um die Anzahl an Bitstellen nach links bzw. nach rechts verschoben, die im rechten Operanden festgelegt wird. Zum Beispiel:
main()
{
unsigned int Value=4; /* 4 = 0000 0100 */
unsigned int Shift=2;
Value = Value << Shift; /* 16="0001" 0000 */ Value <<="Shift;" /* 64="0100" 0000 */ printf("%d\n", Value); /* Prints 64 */ }
|
Das dabei entstehende 'leere' Bit wird auf 0 gesetzt. Verwenden Sie den Datentyp unsigned wenn Sie mit diesen Operatoren arbeiten, um unvorhersehbare Ergebnisse zu vermeiden.
![]()
Aufgaben zum bitweisen Verschieben.
weitere Ausdrücke und Operatoren.
Rangfolge
der Operatoren.
Ergibtanweisungen.