User Tools

Site Tools


k8:k8.4:start

8.4 Logical operators

The group of logical operators NOT, AND, OR, and XOR is required for expressions of the type Boolean on the one hand, and for numbers of the type Short, Integer, or Long (-Integer) on the other. The logical operators form the basis for efficient comparisons and bit manipulation functions. Special cases apply to character strings and objects in logical negation with the NOT operator. Setting parentheses affects the ranking of operations if several logical operators are used.

OperatorDescription
NOT expression0 Calculates the logical NOT of the expression (from True to False and vice versa) or a number based on the binary representation of this number.
Expression1 AND Expression2 Calculates the logical AND of two Boolean expressions or the numeric AND of two integer numbers based on the binary representation of these numbers.
Expression1 OR Expression2 Calculates the logical OR of two Boolean type expressions or the numerical OR of two integer numbers based on the binary representation of these numbers.
Expression1 XOR Expression2 Calculates the logical XOR of two Boolean expressions or the numerical XOR of two integer numbers based on the binary representation of these numbers.

Table 8.4.1: Logical operators for Boolean or numeric expressions

Examples:

If (sCar >= "A" AND sCar <= "Z") OR sCar = "." Then ... 
If sPort AND sPort <> "80" Then sReq &= ":" & sPort
IF (x < 0) OR (x <> Round(x)) Then Error.Raise("Mathematic error")
Do While (sSocket.Status <> Net.Connected AND sSocket.Status > 0)

8.4.1 Logical operators for numbers

The numbers are of the type Boolean Short, Integer or Long (-Integer). The calculation with the used logical operator is based on the bitwise logical operation of the binary representation of the numbers on the basis of the so-called truth tables.

The operator inverts each bit in the binary representation of the number, as shown in the following table and examples:

Bit 1 Bit 2 Not Bit 1 Bit 1 Bit1 AND Bit2 AND Bit2 Bit1 OR Bit1 OR Bit2 Bit1 XOR Bit2 Bit1 XOR Bit2
0 0 0 0 0 0 1 0
0 1 1 1 0 1 1 1
1 0 0 0 0 1 1 1
1 1 1 1 1 1 0 0

Table 8.4.1.1: Logical operators and truth table

Examples:

Print 13;; Bin(13, 8);; Bin(Not 13, 8);; NOT 13
      13   00001101     11110010         -14
Print 5;; 12;; Bin(5, 8);; Bin(12, 8);; Bin(5 AND 12, 8);; 5 AND 12
      5   12   00000101    00001100     00000100           4
Print 5;; 12;; Bin(5, 8);; Bin(12, 8);; Bin(5 OR 12, 8);; 5 OR 12
      5   12   00000101    00001100     00001101          13
Print 5;; 12;; Bin(5, 8);; Bin(12, 8);; Bin(5 XOR 12, 8);; 5 XOR 12
      5   12   00000101    00001100     00001001           9

Chapter 9.9 Bit manipulation introduces functions that consistently work with the presented logical operators.

8.4.2 Special Case Object and Character String

If the operand after the unary logical operator NOT is a string (string) or an object, the following applies to NOT expression: If the expression is a string or an object, True is returned if the expression is zero or False if the expression is NOT zero.

Examples:

Sub Picture_Write(pPicture As Picture) 
    If NOT pPicture Then pPicture = HorizontalFader.DefaultPicture 
    MyOriginalPicture = pPicture
    If MyOriginalPicture Then GetPictures 
    Me.Draw 
End
If NOT btnOhneText.Text Then Message.Info("Button OHNE Beschriftung!")
  • If no image has been transferred, a default image is assigned.
  • Since the button was obviously not labelled in the last example, the negated expression NOT btnOhnetext. text has the truth value True because the expression is guaranteed to be zero.

8.4.3 Download

8.4 Logische Operatoren

Die Gruppe der logischen Operatoren NOT, AND, OR und XOR wird einerseits für Ausdrücke vom Typ Wahrheitswert (boolean) benötigt und andererseits für Zahlen vom Typ Short, Integer oder Long(-Integer). Die logischen Operatoren bilden die Grundlage für effiziente Vergleiche und für die Funktionen zur Bit-Manipulation. Spezialfälle betreffen Zeichenketten und Objekte bei der logischen Negation mit dem Operator NOT. Das Setzen von Klammern beeinflusst die Rangfolge der Operationen, wenn mehrere logische Operatoren verwendet werden.

OperatorBeschreibung
NOT Ausdruck0Berechnet das logische NOT des Ausdrucks (aus True wird False und umgekehrt) oder einer Zahl auf der Grundlage der binären Darstellung dieser Zahl.
Ausdruck1 AND Ausdruck2Berechnet das logische AND zweier Ausdrücke vom Typ Boolean oder das numerische AND zweier Integer-Zahlen auf der Grundlage der binären Darstellung dieser Zahlen.
Ausdruck1 OR Ausdruck2Berechnet das logische OR zweier Ausdrücke vom Typ Boolean oder das numerische OR zweier Integer-Zahlen auf der Grundlage der binären Darstellung dieser Zahlen.
Ausdruck1 XOR Ausdruck2Berechnet das logische XOR zweier Ausdrücke vom Typ Boolean oder das numerische XOR zweier Integer-Zahlen auf der Grundlage der binären Darstellung dieser Zahlen.

Tabelle 8.4.1: Logische Operatoren für Ausdrücke vom Typ Boolean oder Zahlen

Beispiele:

If (sCar >= "A" AND sCar <= "Z") OR sCar = "." Then ... 
If sPort AND sPort <> "80" Then sReq &= ":" & sPort
IF (x < 0) OR (x <> Round(x)) Then Error.Raise("Mathematic error")
Do While (sSocket.Status <> Net.Connected AND sSocket.Status > 0)

8.4.1 Logische Operatoren für Zahlen

Die Zahlen sind vom Typ Boolean Short, Integer oder Long(-Integer). Die Berechnung mit dem verwendeten logischen Operator erfolgt auf der bitweisen logischen Operation der binären Darstellung der Zahlen auf der Grundlage der sogenannten Wahrheitstafeln.

Der Operator invertiert jedes Bit in der binären Darstellung der Zahl, wie es in der folgenden Tabelle und in den Beispielen dargestellt wird:

Bit 1 Bit 2 Not Bit 1 Bit1 AND Bit2 Bit1 OR Bit2 Bit1 XOR Bit2
0 0 1 0 0 0
0 1 1 0 1 1
1 0 0 0 1 1
1 1 0 1 1 0

Tabelle 8.4.1.1: Logische Operatoren und Wahrheitstafel

Beispiele:

Print 13;; Bin(13, 8);; Bin(Not 13, 8);; NOT 13
      13   00001101     11110010         -14
Print 5;; 12;; Bin(5, 8);; Bin(12, 8);; Bin(5 AND 12, 8);; 5 AND 12
      5   12   00000101    00001100     00000100           4
Print 5;; 12;; Bin(5, 8);; Bin(12, 8);; Bin(5 OR 12, 8);; 5 OR 12
      5   12   00000101    00001100     00001101          13
Print 5;; 12;; Bin(5, 8);; Bin(12, 8);; Bin(5 XOR 12, 8);; 5 XOR 12
      5   12   00000101    00001100     00001001           9

Im Kapitel 9.9 Bit-Manipulation werden Funktionen vorgestellt, die konsequent mit den vorgestellten logischen Operatoren arbeiten.

8.4.2 Spezialfall Objekt und Zeichenkette

Wenn der Operand nach dem unären logischen Operator NOT eine Zeichenkette (string) oder ein Objekt ist, dann gilt folgendes für NOT Ausdruck: Ist der Ausdruck eine Zeichenkette oder ein Objekt, wird True zurückgegeben, wenn der Ausdruck Null ist oder False wenn der Ausdruck NICHT Null ist.

Beispiele:

Sub Picture_Write(pPicture As Picture) 
    If NOT pPicture Then pPicture = HorizontalFader.DefaultPicture 
    MyOriginalPicture = pPicture
    If MyOriginalPicture Then GetPictures 
    Me.Draw 
End ' Picture_Write(pBild As Picture) 
If NOT btnOhneText.Text Then Message.Info("Button OHNE Beschriftung!")
  • Wenn kein Bild übergeben wurde, dann wird ein Standard-Bild zugewiesen.
  • Da der Button im letzten Beispiel offensichtlich nicht beschriftet wurde, hat der negierte Ausdruck NOT btnOhnetext.Text den Wahrheitswert True, weil der Ausdruck garantiert Null ist.

8.4.3 Download

The website uses a temporary session cookie. This technically necessary cookie is deleted when the browser is closed. You can find information on cookies in our privacy policy.
k8/k8.4/start.txt · Last modified: 02.07.2018 (external edit)

Page Tools