Mandalex

Einfache Logik

Unter einfacher Logik wird hier die rein binäre Verwendung von Wahrheitswerten verstanden.

Übersicht:

AbkürzungNameZeichenVennC boolC bit
TRUEWahrtruetrue-1
FALSEFalschfalsefalse0
NOTNegation¬not!~
ORDisjunktionor|||
ANDKonjunktionand&&&
IMPImplikationimp
EQUAequivalenzequ==
XORExklusiv-Oderxor^
NORnor
NANDnand

TRUE true und FALSE false

Unter Wahrheitswerten versteht man allgemein die beiden Symbole FALSE und TRUE. Folgende Bezeichnungen sind jedoch äquivalent:

TRUEFALSEBedeutung
10Das binäre Alphabet
xxx0Wobei xxx irgendeine Zahl ungleich 0 ist. Allgemein verbreitet in Programmiersprachen
WahrFalschDas deutsche Pendant
TFDie Abkürzung der englischen Wörter
YesNoJa-Nein auf Englisch
OnOffAn-Aus auf Englisch

Und vieles mehr.

Die Symbole in der Standardlogik sind das ⊤ für TRUE und das ⊥ für FALSE. Im folgenden wird jedoch stets das binäre Alphabet verwendet (0 und 1).

Verwendung in C-Syntax:

Boolsch: Ein boolscher Wert wird normalerweise in einem Byte (unsigned char) gespeichert. Der Wert 0x00 steht dabei für das FALSE und der Wert 0x01 für TRUE. Die meisten Programmiersprachen (auch C) jedoch verstehen jeglichen Wert ungleich 0x00 als TRUE. Dasselbe gilt auch für andere Typen: Die Integer-Zahl 0x00000000 bedeutet FALSE und jede andere Zahl (Bsp. 0x176d2ee5) ist TRUE.

Bitweise: Der Wert -1 wird stets in 0xffffffff übersetzt (je nach Grösse des Typs auch mehr oder weniger f)

NOT not

Die NOT-Verknüpfung oder Negation ist die einfachste Verknüpfung. Jedes Ergebnis, das TRUE ist, wird FALSE und umgekehrt. Wahrheitstabelle:

x¬x
01
10

Das Symbol der Standartlogik für NOT ist das ¬. In Textdateien wird die Tilde ~ oftmals als Ersatz für das ¬ verwendet, da dieses im Gegensatz zu ~ nicht in allen Zeichentabellen vorhanden ist.

Verwendung in C-Syntax:

Boolsch: Um einen Wahrheitswert zu negieren, benötigt man in C das ! (Ausrufezeichen). Beispielsweise ergibt der Ausdruck !(false) den Wahrheitswert true.

Bitwise: Mit der Tilde ~ wird in C das Einerkomplement gebildet. Dies ist nichts anderes, als das Umkehren jeder 0 in eine 1 und umgekehrt. Beispielsweise ergibt der Ausdruck ~0x1248 den Wert 0xedb7. Binär ausgedrückt: ~0b0001 0010 0100 1000 wird zu 0b1110 1101 1011 0111

OR or

Die OR-Verknüpfung oder Disjunktion entspricht nicht dem umgangssprachlichen "oder". OR ergibt TRUE, wenn entweder x, oder y oder beide TRUE sind. Wahrheitstabelle:

xyx ∨ y
000
011
101
111

Das Symbol der Standartlogik für OR ist das ∨. In Textdateien wird oftmals eine Kombination aus Backslash und Slash geschrieben: \/

Verwendung in C-Syntax:

Boolsch: In C wird das || (zweimal senkrechter String) für die OR-Verknüpfung verwendet. Beispielsweise ergibt der Ausdruck true||false den Wahrheitswert true.

Bitwise: Mit dem einfachen | wird in C bitweise OR-verknüpft. Mittels dieser OR-Verknüpfung werden oftmals Masken editiert. Beispielsweise ergibt 0xd0|0x04 den Wert 0xd4.

AND and

Die AND-Verknüpfung oder Konjunktion entspricht dem umgangssprachlichen "und". AND ergibt nur TRUE, wenn x und y beide TRUE sind. Wahrheitstabelle:

xyx ∧ y
000
010
100
111

Das Symbol der Standartlogik für AND ist das ∧. In Textdateien wird oftmals eine Kombination aus Slash und Backslash geschrieben: /\

Verwendung in C-Syntax:

Boolsch: In C wird das && für die AND-Verknüpfung verwendet. Beispielsweise ergibt der Ausdruck true&&false den Wahrheitswert false.

Bitwise: Mit dem einfachen & wird in C bitweise AND-verknüpft. Mittels dieser AND-Verknüpfung werden oftmals Masken editiert. Beispielsweise ergibt 0x55&0x43 den Wert 0x41.

IMP imp

Die IMP-Verknüpfung entspricht in etwa dem umgangssprachlichen "falls ... dann". IMP ergibt dann FALSE, wenn x TRUE, y jedoch FALSE ist. Wahrheitstabelle:

xyx → y
001
011
100
111

Das Symbol der Standartlogik für IMP ist das →. In Textdateien wird oftmals eine Kombination aus Strich und Grösser-Gleich-Zeichen geschrieben: ->

EQU equ

Die EQU-Verknüpfung oder Aequivalenz entspricht dem umgangssprachlichen "wenn beide". EQU ergibt TRUE, wenn x und y gleich sind. Wahrheitstabelle:

xyx ↔ y
001
010
100
111

Das Symbol der Standartlogik für EQU ist das ↔. In Textdateien wird oftmals eine Kombination aus Strich und Kleiner- und Grösser-Gleich-Zeichen geschrieben: <->

Verwendung in C-Syntax:

In C wird das == für die EQU verwendet. Beispielsweise ergibt der Ausdruck true==false den Wahrheitswert false.

XOR xor

Das XOR oder Exklusiv-Oder entspricht dem umgangssprachlichen "oder". XOR ergibt TRUE, wenn entweder x oder y TRUE ist. Wahrheitstabelle:

xyx ⊕ y
000
011
101
110

In der Standartlogik ist kein Symbol für XOR definiert. Allerdings sieht man sehr häufig das Zeichen ⊕.

Es gibt auch noch das negative Pendant zu XOR, das XNOR. Dies ist jedoch dasselbe wie EQU.

Verwendung in C-Syntax:

In C wird das ^ für die XOR-Verknüpfung verwendet. Beispielsweise ergibt der Ausdruck 0x45^0x44 den Wert 0x01.

NOR nor

NOR ist eine Kurzform für NOT OR. NOR ergibt TRUE, wenn x und y beide FALSE sind. Wahrheitstabelle:

xyx ⊕ y
001
010
100
110

Das NOR spielt besonders in der Digitaltechnik eine grosse Rolle.

NAND nand

NAND ist eine Kurzform für NOT AND. NAND ergibt TRUE, wenn x oder y oder beide FALSE sind. Wahrheitstabelle:

xyx ⊕ y
001
011
101
110

Das NAND spielt besonders in der Digitaltechnik eine grosse Rolle.

Neunwertige Logik

Nebst der binären Logik gibt es eine Erweiterung. Diese Erweiterung, welche besonders für die Digitaltechnik eine gewichtige Rolle spielt, definiert anstatt 2 gleich deren 9 Zustände:

UUninitialisiert
XStark unbekannt
0Stark FALSE
1Stark TRUE
ZHochohmig
WSchwach unbekannt
LSchwach FALSE
HSchwach TRUE
-Egal

Diese Zustände entstehen durch Verdrahtung innerhalb eines Stromnetzes. Durch Verluste und Fehler können nebst den normalen 0- und 1-Werten auch diese 9 Zustände entstehen. Manche davon sind auch nur zur Analyse von solchen Netzen. Im folgenden sind sämtliche Wahrheitstabellen für diese 9 Zustände aufgeführt.

Die Senkrechte gibt den Wert von x, die Waagerechte den Wert von y an.

NOT:

x¬x
UU
XX
01
10
ZX
WX
L1
H0
-X

OR:

x ∨ yUX01ZWLH-
UUUU1UUU1U
XUXX1XXX1X
0UX01XX01X
1111111111
ZUXX1XXX1X
WUXX1XXX1X
LUX01XX01X
H111111111
-UXX1XXX1X

AND:

x ∧ yUX01ZWLH-
UUU0UUU0UU
XUX0XXX0XX
0000000000
1UX01XX01X
ZUX0XXX0XX
WUX0XXX0XX
L000000000
HUX01XX01X
-UX0XXX0XX

IMP:

x → yUX01ZWLH-
UUUU1UUU1U
XUXX1XXX1X
0111111111
1UX01XXX1X
ZUXX1XXX1X
WUXX1XXX1X
L111111111
HUX01XXX1X
-UXX1XXX1X

EQU:

x ↔ yUX01ZWLH-
UUUUUUUUUU
XUXXXXXXXX
0UX10XX10X
1UX01XX01X
ZUXXXXXXXX
WUXXXXXXXX
LUX10XX10X
HUX01XX01X
-UXXXXXXXX

XOR:

x ⊕ yUX01ZWLH-
UUUUUUUUUU
XUXXXXXXXX
0UX01XX01X
1UX10XX10X
ZUXXXXXXXX
WUXXXXXXXX
LUX01XX01X
HUX10XX10X
-UXXXXXXXX

NOR:

x NOR yUX01ZWLH-
UUUU0UUU0U
XUXX0XXX0X
0UX10XX10X
1000000000
ZUXX0XXX0X
WUXX0XXX0X
LUX10XX10X
H000000000
-UXX0XXX0X

NAND:

x NAND yUX01ZWLH-
UUU1UUU1UU
XUX1XXX1XX
0111111111
1UX10XX10X
ZUX1XXX1XX
WUX1XXX1XX
L111111111
HUX10XX10X
-UX1XXX1XX