Bit-Operatoren

Werbung
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;
Herunterladen