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).
Bitoperationen
Um einzelne Bits eines Integer-Datums zu beeinflussen, stehen die folgenden Bitoperationen zur Verfügung:
&
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.
Sollten Sie Schwierigkeiten haben das Symbol ^ für den Exklusiv-Oder Operator zu finden: Es befindet sich auf der deutschen Tastatur neben der Taste 1. Um das Symbol ^ zu erhalten, drücken Sie zuerst die Taste ^ und dann die Leertaste.
Beispiele:
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.
<<
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:
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)
Beim Schieben von negativen Daten nach rechts ist das Verhalten lt. ANSI C++ implementierungsabhängig. In der Regel werden die frei werdenden Bits mit dem Vorzeichenbit (höchstwertiges Bit, bei negativen Zahlen gleich '1') aufgefüllt.
Kurzschreibweisen
Für Bit- und Schiebeoperationen stehen folgende Kurzschreibweisen zur Verfügung:
Hier folgen in der Offline-Version die Übungen.
Copyright 2024 © Wolfgang Schröder
E-Mail mit Fragen oder Kommentaren zu dieser Website an: info@cpp-tutor.de
Impressum & Datenschutz