Bit-Operatoren ODER UND nicht A B A&B A B A|B A ~A 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 „&“, „|“ und „~“ sind Operatoren für ganze Zahlen. Eine Zahl wird hier nicht als eine Einheit betrachtet sondern als eine Folge von Bits. Die Operationen werden bitweise ausgeführt. Als Ergebnis ergibt sich aus der Folge von Bits wieder eine ganze Zahl. Beispiele: Bit-Operatoren Ausdruck 3 & 6 Ergebnis Operation (32 Bit) 2 00000000000000000000000000000011 00000000000000000000000000000110 00000000000000000000000000000010 3 | 6 7 00000000000000000000000000000011 00000000000000000000000000000110 00000000000000000000000000000111 3 & 8 0 00000000000000000000000000000011 00000000000000000000000000001000 00000000000000000000000000000000 ~5 -6 ~0 -1 00000000000000000000000000000101 11111111111111111111111111111010 00000000000000000000000000000000 11111111111111111111111111111111 Logische Operatoren ODER UND nicht A B A && B A B A || B A !A false false false false false false false true false true false false true true true false true false false true false true true true true true true true „&&“, „||“ und „!“ sind Operatoren für boolesche Werte. Das Ergebnis ist ein boolescher Wert. Diese Operatoren werden dazu verwendet, Bedingungen mit einander zu verknüpfen oder das Gegenteil einer Bedingung auszudrücken. Beispiele: Logische Operatoren Ausdruck Ergebnis true && false false true || false true !true false (1 < 5) && (5 < 8) true !(2+2==4) false Konvertierungsregeln Regel 1: Steht an einer Stelle, an der ein boolescher Wert erwartet wird, ein Zahlenwert, wird dieser wie folgt in einen booleschen Wert konvertiert: Der Wert Null wird in false, alle anderen Wert in true umgewandelt. Ausdruck Ergebnis false || 8 true 0 && true false 3 && 6 true 3 && 8 true 0 || -1 true !2 false Achtung: Logische Operatoren, sie erwarten logische Werte als Operanden. Ein boolescher Wert wird auch zwischen den runden Klammern nach if oder while erwartet! Konvertierungsregeln Regel 2: Steht an einer Stelle, an der ein Zahlenwert erwartet wird, ein boolescher Wert, wird dieser in einen Zahlenwert konvertiert. Der Wert false wird in 0, der Wert true in 1 umgewandelt. Ausdruck Ergebnis 3 * true 3 1 * false 0 true + true 2 4 | true 5 ~false -1 Arithmetische Operatoren, sie erwarten Zahlen-Werte als Operanden. Arithmetische Operationen mit booleschen Werten sind sehr ungewöhnlich! Ausgabe boolescher Werte Mit „cout“ werden boolesche Werte normalerweise als Zahlen [ 1 / 0 ] ausgegeben. Optional ist die Ausgabe als Text [ true / false ] möglich. Steueranweisungen cout << boolalpha; // Boolesche Werte werden bis auf weiteres // als Text [ true / false ] ausgegeben. // Optionale Einstellung cout << noboolalpha; // Boolesche Werte werden bis auf weiteres // als Zahl [ 1 / 0 ] ausgegeben. // Rücksetzung auf die Standard-Einstellung. Steueranweisungen erzeugen keine Ausgabe. Sie legen fest, wie im folgenden die Werte ausgegeben werden soll. Beispiel #include <iostream> using namespace std; int main() { char Antwort; cout << "Standard-Einstellung: "; cout << "Boolesche Werte werden als Zahlen (1/0) ausgegeben.\n"; cout << "Sollen sie hier als Text (true/false) ausgegeben werden? [J|N]: "; cin >> Antwort; if (Antwort=='J' || Antwort=='j') cout << boolalpha; cout << endl << endl; cout cout cout cout cout cout } << << << << << << " " " " " " return 0; false || 8 ergibt " << (false || 8) << endl; 0 && true ergibt " << (0 && true) << endl; 3 && 6 ergibt " << (3 && 6) << endl; 3 && 8 ergibt " << (3 && 8) << endl; 0 || -1 ergibt " << (0 || -1) << endl; !2 ergibt " << !2 << endl;