C++ Tutorial

Bit- und Schiebeoperationen

Die Bit- und Schiebeoperationen wirken auf die einzelnen Bits eines Integer-Datums. Bis auf den Schiebeoperator 'rechts schieben' arbeiten alle Bit- und Schiebeoperatoren vorzeichenunabhängig, d.h., sie wirken auf signed und unsigned Daten gleich.

Nachfolgend zum Einstieg die binäre Darstellung von unsigned char-Daten (Annahme: char gleich 8 Bits).

Wert
in hex
in binär
10
0x0A
0000'1010
240
0xF0
1111'0000
131
0x83
1000'0001

Bitoperationen

Um einzelne Bits eines Integer-Datums zu beeinflussen, stehen die folgenden Bitoperationen zur Verfügung:

Operator
Syntax
Ergebnis
 &
EXP1 & EXP2;
Liefert an den Stellen eine ‘1’ an der EXP1 und EXP2 eine ‘1’ besitzen.
 |
EXP1 | EXP2;
Liefert an den Stellen eine ‘1’ an der EXP1 oder EXP2 eine ‘1’ besitzen.
 ^
EXP1 ^ EXP2;
Liefert an den Stellen eine ‘1’ an der EXP1 und EXP2 unterschiedliche Bits haben.
 ~
~EXP;
Invertiert alle Bits von EXP.

Beispiele:

EXP1
OP
EXP2
Ergebnis
0x26 (0010 0110)
&
0x23 (0010 0011)
0x22 (0010 0010)
0x45 (0100 0101)
&
0x0F (0000 1111)
0x05 (0000 0101)
0x26 (0010 0110)
|
0x23 (0010 0011)
0x27 (0010 0111)
0x45 (0100 0101)
|
0x0F (0000 1111)
0x4F (0100 1111)
0x26 (0010 0110)
^
0x23 (0010 0011)
0x05 (0000 0101)
0x45 (0100 0101)
^
0x0F (0000 1111)
0x4A (0100 1010)
~
0x26 (0010 0110)
0xD9 (1101 1001)
~
0x45 (0100 0101)
0xBA (1011 1010)

Schiebeoperationen

Schiebeoperationen schieben die Bits eines Integer-Datums um x Stellen nach links oder rechts. Die Anzahl der Stellen muss positiv sein.

Operator
Syntax
Ergebnis
<<
EXP1 << EXP2;
Schiebt die Bits in EXP1 um EXP2 Positionen nach links
>>
EXP1 >> EXP2;
Schiebt die Bits in EXP1 um EXP2 Positionen nach rechts

Beim Schieben werden die freiwerdenden Bits mit 0 aufgefüllt und ein eventueller Überlauf verworfen.

Beispiel:

EXP1
OP
EXP2
Ergebnis
0x26 (0010 0110)
<<
2
0x98 (1001 1000)
0x45 (0100 0101)
<<
4
0x50 (0101 0000)
0x26 (0010 0110)
>>
2
0x09 (0000 1001)
0x45 (0100 0101)
>>
4
0x04 (0000 0100)

Kurzschreibweisen

Für Bit- und Schiebeoperationen stehen folgende Kurzschreibweisen zur Verfügung:

Kurzschr.
Bedeutung
x &= y
x = x & y
x |= y
x = x | y
x ^= y
x = x ^ y
x <<= y
x = x << y
x >>= y
x = x >> y

Copyright 2024 © Wolfgang Schröder
E-Mail mit Fragen oder Kommentaren zu dieser Website an: info@cpp-tutor.de
Impressum & Datenschutz