Operatoren, Teil 2

Vergleichsoperatoren

Operator

Funktion

Bemerkungen

>

Grösser als

>=

Grösser oder Gleich

<

Kleiner als

<=

Kleiner oder gleich

==

Gleich

Nicht zu verwechseln mit dem Zuweisungsoperator =.
Hier werden häufig Fehler gemacht wenn z.B. folgende Sequenz angewendet wird:

if (x = 5) TuEtwas();
else TuEtwasAnderes();

Hier wird zuerst der Wert 5 an x zugewiesen. Das Resultat der Zuweisung ist 5 (entspricht logisch wahr) und deswegen wird immer TuEtwas() ausgeführt werden. Der vorherige Inhalt von x geht verloren.

!=

Nicht gleich

Vergleichsoperatoren haben geringeren Vorrang als arithmetische Operatoren.

Logische Operatoren

Operator

Funktion

Bemerkungen

&&

Logisches UND

nicht verwechseln mit dem Bit-Operator &.

&& hat geringeren Vorrang als die Bit-Operatoren.

||

Logisches ODER

nicht verwechseln mit dem Bit-Operator |.

|| hat geringeren Vorrang als &&.

!

Logisches NICHT

Man nennt diesen den unären Negationsoperator.

! hat höheren Vorrang als die arithmetischen Operatoren.

Ausdrücke mit logischen Operatoren werden so lange von links her ausgewertet, bis das Resultat der Verknüpfung feststeht.

Bit-Operatoren

Operator

Funktion

Bemerkungen

&

Bitweises UND

nicht verwechseln mit &&.

Beim Bitweisen UND werden zwei Werte Bit für Bit miteinander verglichen. Überall dort, wo das Bit in beiden Werten gesetzt ist wird es auch im Resultat gesetzt.

Beispiel:

char a, x, y;
x = 21;
y = 25;
a = x & y;

Hier wird a der Wert 17 zugewiesen.
Beweis:

00010101    entspricht dezimal 21
00011001    entspricht dezimal 25
========
00010001    Resultat entspricht dezimal 17

|

Bitweises ODER

nicht verwechseln mit ||.

Beim Bitweisen ODER werden zwei Werte Bit für Bit miteinander verglichen. Überall dort, wo das Bit in mindestens einem von beiden Werten gesetzt ist wird es auch im Resultat gesetzt.

Beispiel:

char a, x, y;
x = 21;
y = 25;
a = x | y;

Hier wird a der Wert 29 zugewiesen.
Beweis:

00010101    entspricht dezimal 21
00011001    entspricht dezimal 25
========
00011101    Resultat entspricht dezimal 29

^

Exklusives ODER

XOR.

Hier wird's erst richtig lustig.

Beim Bitweisen ODER werden zwei Werte Bit für Bit miteinander verglichen. Überall dort, wo das Bit in genau einem von beiden Werten gesetzt ist wird es auch im Resultat gesetzt.

Beispiel:

char a, x, y;
x = 21;
y = 25;
a = x ^ y;

Hier wird a der Wert 12 zugewiesen.
Beweis:

00010101    entspricht dezimal 21
00011001    entspricht dezimal 25
========
00001100    Resultat entspricht dezimal 12

~

Komplement

Vertauscht den Wert jedes einzelnen Bits. Aus 1 wird 0 und aus 0 wird 1.

<<

Bitweise nach links schieben

a = 1 << 2 ergibt a gleich 4.

Es erfolgt kein Übertrag, d.h. Bits, die links rausgeschoben werden, gehen verloren.

>>

Bitweise nach rechts schieben

a = 8 >> 1 ergibt a gleich 4.

Es erfolgt kein Übertrag, d.h. Bits, die rechts rausgeschoben werden, gehen verloren.
Somit ergibt 1 >> 1 gleich 0.