Forum: Knobelecke
Moderatoren: broesel, juergenThema: Logische Primitive
Logische Primitive
jengelh am 12.08.2004 um 08:44
die logische Implikationstabelle zeigt:
bei a==1 und b==0 ist x==0,
also: if(a && !b) { x == 0 }
oder: if(!(a && !b)) { x == 1 }
und wenn man das nach den DeMorgan'schen Regeln
umformt:
if(!a || b)
Die XOR-Tabelle ist
a | b | a => b
---+---+--------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 0
1 | 1 | 1
Ausgehend von:
(!a && b) || (a && !b)
erstmal definieren:
p = !(!a && b)
q = !(a && !b)
Laut
!(p && q) == !p || !q
ergibt sich
!(!(!a && b) && !(a && !b)) == !(P) || !(Q)
bei weiterem Einsetzen leuchtet die rechte Seite
== !!(!a && b) || !!(a && !b)
was wiederrum nichts ist als:
(!a && b) || (a && !b) womit:
!(!(!a && b) && !(a && !b)) == (!a && b) || (a && !b) == XOR sein müsste.
Logische Primitive
broesel (webmaster) am 12.08.2004 um 10:28
// Implikation
if(!(a && !b)) { x == 1 }
// XOR
!(!(!a && b) && !(a && !b))
Richtig! :D
Der Trick ist eigentlich simpel: erst in konjunktive bzw. disjunktive Normalform bringen (hast Du im ersten Posting gemacht), dann doppelte Verneinung anwenden (das ändert nicht den Wahrheitsgehalt), dann die erste Verneinung auflösen sodaß nur noch AND bzw. NOT im Ausdruck enthalten ist.
Gruss
Philip
--
The C Programming Quiz
- bitte Fragen einreichen :)
Logische Primitive
jengelh am 12.08.2004 um 14:17
da hätte doch auch a^b genügt
