Boolsche Logik

Was ist Boolesche Logik?

George Boole war ein englischer Mathematiker der 1854 eine Algebra entwickelte die nur mit zwei Werten arbeitet: wahr (1) und falsch (0). Heute ist seine Boolesche Algebra die Grundlage jedes Computers – denn Transistoren kennen auch nur zwei Zustände: Strom an (1) oder Strom aus (0).

In der IT begegnet uns Boolesche Logik ständig:

  • Beim Subnetting – AND-Verknüpfung von IP und Subnetzmaske

  • Bei Firewall-Regeln – Pakete erlauben ODER blockieren

  • Bei Zugriffsrechten – Berechtigung vorhanden oder nicht

  • Bei Datenbankabfragen – WHERE name = 'Max' AND alter > 18

  • Bei Programmierungen – if/else Bedingungen

Die vier wichtigsten Operatoren

AND (UND) – beide müssen wahr sein

Das Ergebnis ist nur dann 1 wenn beide Eingaben 1 sind. Stell dir zwei Schalter in Reihe vor – beide müssen eingeschaltet sein damit die Lampe leuchtet.

A

B

A AND B

0

0

0

0

1

0

1

0

0

1

1

1

Schreibweise: A AND B oder A ∧ B oder A & B

OR (ODER) – mindestens eine muss wahr sein

Das Ergebnis ist 1 wenn mindestens eine Eingabe 1 ist. Zwei Schalter parallel – es reicht wenn einer eingeschaltet ist.

A

B

A OR B

0

0

0

0

1

1

1

0

1

1

1

1

Schreibweise: A OR B oder A ∨ B oder A | B

NOT (NICHT) – Umkehrung

NOT kehrt den Wert um. Aus 1 wird 0, aus 0 wird 1. Wie ein Wechselschalter – wenn er aus ist, ist die Lampe an.

A

NOT A

0

1

1

0

Schreibweise: NOT A oder ¬A oder !A

XOR (Exklusives ODER) – genau eine muss wahr sein

Das Ergebnis ist nur dann 1 wenn genau eine Eingabe 1 ist – nicht beide. XOR wird in der Kryptographie und bei Fehlerkorrektur verwendet.

A

B

A XOR B

0

0

0

0

1

1

1

0

1

1

1

0

Schreibweise: A XOR B oder A ⊕ B oder A ^ B

Bitweise Operationen

In der IT werden Boolesche Operatoren häufig bitweise angewendet – das bedeutet, der Operator wird auf jedes einzelne Bit zweier Binärzahlen angewendet:

Beispiel AND:
  10110101
& 11001100
──────────
  10000100

Jede Stelle einzeln:
1 AND 1 = 1
0 AND 1 = 0
1 AND 0 = 0
1 AND 0 = 0
0 AND 1 = 0
1 AND 1 = 1
0 AND 0 = 0
1 AND 0 = 0

AND beim Subnetting – das wichtigste Praxisbeispiel

Beim Subnetting wird die AND-Verknüpfung verwendet um die Netzwerkadresse zu berechnen. Der Router verknüpft IP-Adresse und Subnetzmaske bitweise mit AND:

IP-Adresse:    192.168.10.130
               11000000.10101000.00001010.10000010

Subnetzmaske:  255.255.255.192   (/26)
               11111111.11111111.11111111.11000000

AND-Ergebnis:
               11000000.10101000.00001010.10000000
             = 192.168.10.128

→ Das Gerät gehört zum Netzwerk 192.168.10.128/26

Überall wo die Subnetzmaske eine 1 hat wird der IP-Bit übernommen. Überall wo die Subnetzmaske eine 0 hat wird das Ergebnis 0 – das ist der Hostanteil der gelöscht wird.

NAND und NOR – abgeleitete Operatoren

Aus den Grundoperatoren lassen sich weitere ableiten:

Operator

Bedeutung

Formel

Ergebnis für 1,1

NAND

NOT AND – Ergebnis von AND umgekehrt

NOT (A AND B)

0

NOR

NOT OR – Ergebnis von OR umgekehrt

NOT (A OR B)

0

XNOR

NOT XOR – gleiche Werte ergeben 1

NOT (A XOR B)

1

Boolesche Logik in der Praxis

Firewall-Regeln

Erlaube Paket wenn:
Protokoll = TCP AND Zielport = 443
→ Nur HTTPS-Pakete werden durchgelassen

Blockiere Paket wenn:
Quell-IP = 10.0.0.5 OR Quell-IP = 10.0.0.6
→ Beide IPs werden blockiert

Zugriffsrechte (Linux)

Dateirechte: rwxr-xr--
             111 101 100

Besitzer:  1 AND 1 AND 1 → lesen, schreiben, ausführen
Gruppe:    1 AND 0 AND 1 → lesen, ausführen
Andere:    1 AND 0 AND 0 → nur lesen

Datenbankabfragen

SELECT * FROM users
WHERE aktiv = 1
AND (rolle = 'admin' OR rolle = 'editor')
AND NOT gesperrt = 1

→ Aktive Admins oder Editoren die nicht gesperrt sind

Masken und Flags

Boolesche Operatoren werden häufig verwendet um einzelne Bits in einem Byte zu setzen, zu lesen oder zu löschen:

Bit setzen mit OR:
  00001010
| 00000100   (Maske für Bit 2)
──────────
  00001110   → Bit 2 wurde gesetzt

Bit löschen mit AND NOT:
  00001110
& 11111011   (invertierte Maske)
──────────
  00001010   → Bit 2 wurde gelöscht

Bit prüfen mit AND:
  00001110
& 00000100   (Maske für Bit 2)
──────────
  00000100   → Ergebnis ≠ 0 → Bit 2 ist gesetzt!

Zusammenfassung

  • AND: Ergebnis ist 1 nur wenn beide Eingaben 1 sind

  • OR: Ergebnis ist 1 wenn mindestens eine Eingabe 1 ist

  • NOT: Kehrt den Wert um – aus 1 wird 0 und umgekehrt

  • XOR: Ergebnis ist 1 wenn genau eine Eingabe 1 ist

  • Beim Subnetting berechnet AND die Netzwerkadresse

  • Bitweise Operationen arbeiten auf jedem einzelnen Bit

  • AND setzt Bits auf 0, OR setzt Bits auf 1, XOR kippt Bits