Boolean

Datentyp mit den Ausprägungen wahr oder falsch

Ein Boolean [ˈbuːliən], benannt nach George Boole, ist ein Element einer booleschen Algebra.[1] Eine Sonderform mit nur zwei Zuständen ist in der Digitaltechnik die Schaltvariable (englisch switching variable) bzw. bei der Programmierung der boolesche Datentyp zur Darstellung der logischen Wahrheitswerte wahr und falsch.

Grundlagen: boolesche Mathematik und Schaltalgebra

Bearbeiten

Eine boolesche Variable im Allgemeinen ist eine Variable, die nur endlich viele Werte oder Zustände annehmen kann: Mit seinem Werk The Mathematical Analysis of Logic von 1847 legte George Boole einen Grundstein für die formale Logik und die Rechentechnik. Die Menge dieser Werte bildet einen Zeichenvorrat.

Sonderform der booleschen Algebra ist die Schaltalgebra, die Schaltvariable kann nur einen von wenigen Werten annehmen:

  • Hier sind es meist zweiwertige (binäre) boolesche Variablen – in der Fachsprache versteht man unter boolescher Variable im Allgemeinen eine Schaltvariable im engeren Sinne. Dieses dichotome Wertepaar wird je nach Anwendung u. a. als wahr/falsch bzw. true/false (Aussagenvariable), oder 1/0 (Binärzahl) bezeichnet. In der elektronischen Datenverarbeitung werden die beiden Werte mit Spannungs- oder Strompegeln dargestellt: HIGH, H oder 1 bzw. LOW, L oder 0 (Null) – als Schaltung entspricht das Ein/Aus, oder aber –1/1, was einem Flipflop entspricht.
  • Daneben gibt es in der Anwendung häufig auch dreiwertige Schaltvariablen in der Form –1/0/1 (mathematisch eine vorzeichenbehaftete einstellige Binärzahl oder ein ternäres Zahlensystem 0/1/2), also HIGH/NULL/LOW, etwa in der Steuerungs- und Regelungstechnik (VORWÄRTS/STOPP/RÜCKWÄRTS). Boolesche- bzw. Schaltalgebra ist aber prinzipiell über beliebigem Zeichenvorrat (Wertebereich) möglich.

Digitaltechnik

Bearbeiten

In der Digitaltechnik werden boolesche Werte durch unterschiedliche elektrische Spannungsbereiche (sog. Logikpegel) realisiert. Die konkreten Spannungsgrenzen hängen von der verwendeten Technik ab (z. B. Transistor-Transistor-Logik oder CMOS).

Programmierung

Bearbeiten

Im Bereich der Softwareentwicklung versteht man unter einem booleschen Ausdruck einen Ausdruck, der nur die beiden Wahrheitswerte True und False (englisch für wahr und falsch) annehmen kann. Solche Werte können miteinander logisch verknüpft und Variablen eines passenden Typs zugewiesen werden. Sie finden bei Sprunganweisungen Verwendung um den Kontrollfluss zu ändern, in der Regel bei bedingten Anweisungen oder Schleifen.

Viele Programmiersprachen stellen dafür einen eigenen Datentyp zur Verfügung, etwa unter der Bezeichnung boolean (Algol 60, Pascal, Java, Lua, Ada, Visual Basic Classic, BASIC) oder bool (Algol 68, C#, C++, PHP, Python) oder logical (Fortran). Der Boolean ist ein elementarer Datentyp.[1]

Zur Repräsentation eines booleschen Wertes genügt prinzipiell ein einzelnes Bit, um die beiden möglichen Zustände zu repräsentieren. Aus technischen Gründen wird jedoch in der Regel eine andere Repräsentation gewählt, meist abhängig von der Wortbreite des verwendeten Systems, wobei bei C++ Vektoren für diesen Typ optimiert sind.[2] Wird ein boolescher Wert mit einem Ganzzahltyp dargestellt, steht meist 0 für falsch und alles ungleich Null (häufig wird −1 oder 1 verwendet) für wahr. Anders in der Linux- bzw. Unix-Shell-Programmierung: Hier steht ein Wert größer Null für einen Fehler und im übertragenen Sinne für falsch, während Null für einen erfolgreichen Programmaufruf und so für wahr steht.

Bearbeiten

Einzelnachweise

Bearbeiten
  1. a b Markus A. Mathes, Jochen Seufert: Programmieren in C++ für Elektrotechniker und Mechatroniker. Springer Vieweg, Wiesbaden 2022, ISBN 978-3-658-38500-2, Kapitel 9.1: Elementare Datentypen – Boolesche Werte, S. 45 f., doi:10.1007/978-3-658-38501-9.
  2. Richard Kaiser: C++ mit Visual Studio 2022 und Windows Forms-Anwendungen. Springer Vieweg, Berlin / Heidelberg 2022, ISBN 978-3-662-65256-5, Kapitel 12: Containerklassen der C++-Standardbibliothek, S. 659, doi:10.1007/978-3-662-65257-2: „Ein Vektor vector<bool> […] unterscheidet sich von Vektoren mit Elementen anderer Datentypen dadurch, dass möglichst viele (also 8) Werte in ein Byte gepackt werden.“