Statusanzeigen bei Ein-/Ausgabe (Stream-Klassen) Zugriffsrechte auf Dateien Maschinensteuerung/Gerätetreiber Status-/Steuerungsangaben für Anlagen
Dr. Norbert Spangler / Grundlagen der Informatik
27.05.2007
2
Bitoperatoren & | ^ ~ >
bitweises UND bitweises ODER bitweises exklusives ODER (XOR) Komplement NICHT Links-Shift Rechts-Shift
Die Operanden müssen vom ganzzahligen Typ sein. Die Bitoperatoren sollte man nicht mit den logischen Operatoren && bzw. || verwechseln, welche stets auf die gesamte Zahl wirken und nicht auf die einzelnen Bits.
Dr. Norbert Spangler / Grundlagen der Informatik
27.05.2007
3
Wahrheitstafeln UND 0&0 0&1 1&0 1&1
Ergebnis 0 0 0 1
XOR 0^0 0 ^1 1^0 1^1
Ergebnis 0 1 1 0
Dr. Norbert Spangler / Grundlagen der Informatik
ODER Ergebnis 0|0 0 0|1 1 1|0 1 1|1 1 NICHT Ergebnis ~0 1 ~0 1
27.05.2007
4
Aufgabe: Löschen von Bits Die Bits 3-7 und 10-12 in einem Operanden sollen gelöscht werden. Erzeugung einer Maske, welche an den zu löschenden Bitpositionen 0 hat und ansonsten 1 1110 0011 0000 0011
= E303
In C++: short maske=0xE303, operand=0xC1F1;
Anwendung des UND-Operators
operand 1100 0001 1111 0001=C1F1
ergebnis = operand & maske
maske
1110 0011 0000 0011=E303
ergebnis 1100 0001 0000 0001=C101
Dr. Norbert Spangler / Grundlagen der Informatik
27.05.2007
5
Aufgabe: Löschen von Bits Spezialfall: alle Bits bis auf eines sind 0 (maske hat nur 1 gesetztes Bit).
Anwendung des UND-Operators
operand 1100 0001 1111 0001=C1F1
ergebnis = operand & maske
maske
0000 0001 0000 0000=0101
ergebnis 0000 0001 0000 0000=0100
Ergebnis: Das Bit an der entsprechenden Position im Operanden wird übernommen und alle anderen werden gelöscht. D.h. ist das Ergebnis 0, war dieses Bit 0, ist das Ergebnis ungleich 0, war das Bit 1. Damit können einzelne Bits geprüft werden.
Dr. Norbert Spangler / Grundlagen der Informatik
27.05.2007
6
Aufgabe: Setzen von Bits Die Bits 0-2,8-9,13-15 in einem Operanden sollen gesetzt werden. Erzeugung einer Maske, welche an den zu setzenden Bitpositionen 1 hat und ansonsten 0. 1110 0011 0000 0111
= E303
In C++: short maske=0xE303, operand=0xC1F1;
Anwendung des ODER-Operators
operand 1100 0001 1111 0001=C1F1
ergebnis = operand | maske
maske
1110 0011 0000 0011=E303
ergebnis 1110 0011 1111 0011=E3F3
Dr. Norbert Spangler / Grundlagen der Informatik
27.05.2007
7
Aufgabe: Invertieren von Bits Die Bits 0-2,8-9,13-15 in einem Operanden sollen invertiert werden. Erzeugung einer Maske, welche an den zu invertierenden Bitpositionen 1 hat und ansonsten 0 1110 0011 0000 0111
= E303
In C++: short maske=0xE303, operand=0xC1F1;
Anwendung des XOR-Operators
operand 1100 0001 1111 0001=C1F1
ergebnis = operand ^ maske
maske
1110 0011 0000 0011=E303
ergebnis 0010 0010 1111 0010=22F2
Dr. Norbert Spangler / Grundlagen der Informatik
27.05.2007
8
Aufgabe: Invertieren aller Bits Anwendung des Nicht-Operators (anstelle der Variante mit einer Maske, in der alle Bitpositionen gesetzt sind + Anwendung des XOR-Operators)