Zur Druckansicht wechseln Visit the English version of this page

www.jb-electronics.de » Programmieren » Logische Operatoren

Logische Operatoren

Beim Programmieren kommt es oft vor, dass verschiedene Bedingungen verknüpft werden müssen. Ein praktisches Beispiel: Ein Sound soll nur ertönen, wenn die X- und Y-Koordinate der Maus eine gewisse Position haben oder aber die Taste "S" gedrückt wird. Der Pseudocode sähe dann so aus:

IF ( MousePositionX = 100 AND MousePositionY = 100 ) OR ( INKEY$ = "S" ) THEN
 ' Sound abspielen
END IF

Es werden also zwei Bedingungen logisch miteinander verknüpft. Einmal mit dem Operator AND, und einmal mit dem Operator OR. Die Klammern sind nicht zwingend erforderlich, da ein Gleichheitszeichen stärker bindet als ein logischer Operator, dienen aber der Übersichtlichkeit. Wie dem aufmerksamen Leser oder der aufmerksamen Leserin schon aufgefallen sein mag, stammen diese Worte aus dem Englischen und bedeuten UND bzw. ODER; und genau das ist auch ihre Funktion.

Wahrscheinlich war das jetzt nicht viel Neues, da fast jeder diese Operatoren intuitiv richtig verwenden kann. Aber was passoert zum Beispiel, wenn man zwei Zahlen miteinander logisch verknüpft? Was entsteht bei folgendem Code?

PRINT 3 AND 6
PRINT 6 OR 8

Eins sei schonmal verraten: Die Ergebnisse sind 2 und 14. Aber wie kommt man auf diese Zahlen? Nun, um diesen Vorgang zu verstehen, sollte man mit dem Binärsystem vertraut sein. Die Zahlen im Binärsystem bestehen aus einzelnen Bits. Bits sind Werte, die nur 1 oder 0 sein können. Dabei steht ein Bit immer für eine Zahl. Hier ein Beispiel:

Nehmen wir einmal an, wir wollen die Zahl 13 darstellen. Dazu müssen wir die Zahl zuerst in Potenzen zur Basis 2 zerlegen:

13 = 23 + 5
13 = 23 + 22 + 1
13 = 23 + 22 + 20

Eine Binärzahl besteht - wie oben gesagt - aus verschiedenen Bits. Das Bit Nr. 3 zum Beispiel sagt aus, ob der Wert 2 ^ 3 in der Summe der Zahl vorhanden ist. Die Bits sind durchnummeriert, und zwar von 0 aufwärts. Für die Zahl 13 benötigen wir allerdings nur 4 Bits, da 2 ^ 4 = 16. 4 Bits deshalb, da wir ja bei Bit Nr. 0 anfangen zu zählen. Lange Rede, kurzer Sinn, die Zahl 13 im Binärsystem sieht also folgendermaßen aus:

1101

Wichtig: Im Binärsystem wird von rechts nach links gelesen. Die 1 ganz rechts (also das Bit Nr. 0) sagt aus, dass in der Summe der Zahl 13 die 2 ^ 0 (= 1) vorhanden ist. Die nächste Zahl ist das Bit Nr. 1, welches in diesem Falle 0 beträgt. Also ist die 2 ^ 1 (= 2) in der Summe der Zahl 13 nicht enthalten. Führt man diese Rechnung weiter, kommt man zu dem Ergebnis:

Zahl im Dezimalsystem = 20 + 0 + 22 + 23 = 13

So, jetzt wissen wir im Groben wie das Binärsystem funktioniert, aber was haben wir davon?

Mit den oben genannten logischen Operatoren können Zahlenwerte bitweise verknüpft werden. Dabei wird jedes einzelne Bit in einer Zahl mit seinem Gegenstück in der anderen Zahl verglichen. Das Ergebnis hängt natürlich von dem verwendeten Operator ab. Hier unser obiges Rechenbeispiel:

 3    0011
 6    0110
AND --------
 2    0010

Beide Zahlen werden mit dem AND-Operator verglichen. Dabei sucht der Operator nach Bits, die in beiden Zahlen gesetzt sind. In diesem Falle ist das nur das Bit Nr. 1 (= 2).

Beim OR-Operator wird überprüft, ob das eine oder das andere Bit gesetzt ist. Sollte eines der beiden Bits oder sogar beide gesetzt sein, wird das entsprechende Bit auch im Ergebnis gesetzt. Hier als Rechnung der Zahlen 6 und 10:

 6    0110
 10   1010
 OR --------
 14   1110

Es existieren noch andere Operatoren, wie zum Beispiel der XOR-Operator, der auch exklusives Oder genannt wird. Es unterscheidet sich insofern vom OR-Operator, als dass hierbei entweder das Bit im ersten Ausdruck oder das Bit im zweiten Ausdruck gesetzt sein darf, um auch das entsprechende Bit im Ergebnis zu setzen. Sollten beide Bits gesetzt sein, wird das Bit im Ergebnis nicht gesetzt. Das sind allerdings nur Feinheiten, die Funktionsweise sollte eigentlich klar sein.

Natürlich existieren noch weitere Operatoren, doch auf die möchte ich jetzt nicht eingehen. Alle Operatoren sind übrigens in der QuickBASIC-Hilfe mit Wahrheitstabellen dokumentiert.

Nochmal zu unserem allerersten Beispiel: Die Ausdrücke bestehend aus Wert1, Gleichheitszeichen und Wert2 (z.B. INKEY$ = "S") sind als je ein einziges Bit zu verstehen. Sollten sie wahr sein, ist das Bit gesetzt, und sollten sie falsch sein, ist das Bit nicht gesetzt. Der Compiler/Interpreter führt also genau den gleichen Vergleich durch, den wir soeben mit den Zahlen im Binärsystem vorgenommen haben.

Nach oben

show print layout Die deutsche Version der Seite besuchen

www.jb-electronics.de » Programming » Boolean Operations

Boolean Operations

My apologies...

There is no English translation of this page available yet. It will take some more time for me to translate the whole website.

If you have a particular interest in this page getting translated as fast as possible, please contact me; I will see what I can do. Please click here for the German version.

To the top