boolesche algebra
-
Hey ich bin mir nicht sicher ob ich die Frage im richtigen Forum stelle. Ich habe ne Frage zu Booleschen Algebra.
Und zwar habe ich folgende Frage:
Die Aufgabe lautet:!false || false && false
und man soll sagen was als Ergebnis rauskommt.
Ich habe das jetzt einfach von links nach rechts ausgewertet, da es ja keine klammern gibt.
!flase --> true
true || false --> true
true && false --> false
es müsste doch also am Ende false bzw 0 rauskommen. Wenn ich es aber programmiere und ausführe kommt 1 raus. Kann mir einer sagen wieso.
Danke schon mal
-
&& hat einen höheren Rang als || - ganz so wie du das von * vs. + kennst.
-
Alles klar vielen Dank. Dann hat uns unser Übungsleiter was falsches gesagt...
-
wenn mich nicht alles täuscht hat das 'und' vorrang vor dem 'oder', also:
!false || (false && false)das wird zu true || false == true.
-
camper schrieb:
&& hat einen höheren Rang als || - ganz so wie du das von * vs. + kennst.
yepp!
-
camper schrieb:
&& hat einen höheren Rang als || - ganz so wie du das von * vs. + kennst.
Die Elektrotechniker schreiben das gerne mit * und +. Ich erinnere mich noch dass wir das seinerzeit so in Technischer Informatik machen mussten,
und ich halte das immer noch für die lesbarste Schreibweise in der man Boolesche Algebra machen kann - die ganzen , , und Klammern erzeugen
mir viel zu viel Bildrauschen und ich bekomme Flimmern vor den Augen. Dazu kommt noch dass man mit + und * mehr "Übung" seit der Grundschule hat.
So wird die Aufgabe von infoe richtig intuitiv:
\overline{ \bf 0 } + \bf 0 \cdot \bf 0 \iff \overline{ \bf 0 } + \bf 0 \iff \bf 1 + \bf 0 \iff \bf 1
vs.
\lnot{ \bf f } \lor \bf f \land \bf f \iff \lnot{ \bf f } \lor \bf f \iff \bf w \lor \bf f \iff \bf w (igitt!)
beim Programmieren bringts nicht viel, aber wenn man viele Zeilen lange Ausdrücke umformen/vereinfachen will (oder muss) ist die erste Variante ein Segen.
Gruss,
Finnegan
-
Fricky667 schrieb:
wenn mich nicht alles täuscht hat das 'und' vorrang vor dem 'oder', also:
!false || (false && false)das wird zu true || false == true.
Nö, ich behaupte der erste Teil wird ausgewertet, liefert true und damit ist die Bedingung erfüllt und der zweite Teil wird garnicht erst ausgeführt.Zu früh am morgen, sorry.
-
Finnegan schrieb:
Die Elektrotechniker schreiben das gerne mit * und +.
Ich habe von dieser Notation gehört, bin auch E-Techniker, aber bei uns galt sowas damals (vor etwa 15 Jahren) als exotisch.
Finnegan schrieb:
So wird die Aufgabe von infoe richtig intuitiv:
\overline{ \bf 0 } + \bf 0 \cdot \bf 0 \iff \overline{ \bf 0 } + \bf 0 \iff \bf 1 + \bf 0 \iff \bf 1
Ja, beim 'or' (Malzeichen) sieht das gut aus, aber wenn du zB. sowas wie true||true, also 1+1 hast, ist das schon nicht mehr so wirklich intuitiv. Aber ist natürlich Ansichtssache.
-
Mein Prof für technische Informatik hat auch die Notation verwendet. Ich fand die ganz angenehm. Ok, 1 + 1 = 1 ist vlt erstmal ungewohnt. Dafür funktionieren aber Assoziativ-, Kommutativ- und Distributivgesetz wie gewohnt.
Und es ist auf jeden Fall einfacher zu lesen, als in C++ Syntax.
-
Schlangenmensch schrieb:
Mein Prof für technische Informatik hat auch die Notation verwendet. Ich fand die ganz angenehm. Ok, 1 + 1 = 1 ist vlt erstmal ungewohnt. Dafür funktionieren aber Assoziativ-, Kommutativ- und Distributivgesetz wie gewohnt.
Und es ist auf jeden Fall einfacher zu lesen, als in C++ Syntax.
Konsequenterweise sollte man bei dieser Notation das Minuszeichen als Not-Operator verwenden. Wahrheitswerte Umdrehen ist ja intuitiv gesehen auch sowas wie eine Änderung des "Vorzeichens".
-
Fricky667 schrieb:
Ja, beim 'or' (Malzeichen) sieht das gut aus
'or' ist '+' (Malzeichen ist 'and').
-
wob schrieb:
Fricky667 schrieb:
Ja, beim 'or' (Malzeichen) sieht das gut aus
'or' ist '+' (Malzeichen ist 'and').
Stimmt:
* ist Konjunktion (and)
+ ist Disjunktion (or)
-
Ich habe die Schreibweise mit + und * grade als "US-Schreibweise" gefunden, dass war mir tatsächlich neu.
Fricky667 schrieb:
Konsequenterweise sollte man bei dieser Notation das Minuszeichen als Not-Operator verwenden. Wahrheitswerte Umdrehen ist ja intuitiv gesehen auch sowas wie eine Änderung des "Vorzeichens".
Das sehe ich nicht so. Dann hat man so Sachen wie A*-A = 0, was ja im Körper der reellen Zahlen mit (*,+) nur für A=0 gilt.
Auf der anderen Seite hätte man für "oder" dann A+-A=1, was auch wieder Murks ist.
Da halte ich die Schreibweise mit dem Strich drüber schon für ganz gut.
-
Schlangenmensch schrieb:
Da halte ich die Schreibweise mit dem Strich drüber schon für ganz gut.
Darüber ließe sich endlos streiten. ich habe auch schon das "not" als "'" gesehen, also not(a) == a'
Schlangenmensch schrieb:
Dann hat man so Sachen wie A*-A = 0, was ja im Körper der reellen Zahlen mit (*,+) nur für A=0 gilt.
"a and (not)a" ist ja auch 0. passt doch. wir sind ja hier nicht bei reals, sondern bei binärzahlen, also der endlichen menge {0,1}.
Btw, wenn wir jetzt schon bei abstrakter Algebra sind: bildet die menge der Binärzahlen mit or (oder mit and) eine Gruppe im sinne der Gruppenaxiome?
in beiden, in einem oder in keinem Fall?
Das ist doch eine interessante Frage ....
-
Fricky667 schrieb:
"a and (not)a" ist ja auch 0.
Genau, aber wenn wir den Zahlenraum in R schauen, sehen wir A * -A <> 0, außer für A = 0. Das gilt auch für Binärzahlen übrigens, denn eine Binärzahl hat bekanntlich mehr als nur wahr und falsch. Man kann mit Binärzahlen vielmehr alle ganzen Zahlen darstellen.
Und ja, das vorzeichenbehaftete Binärsystem bildet eine additive Gruppe. (Wenn ich jetzt grade kein grundlegende Vorraussetzung vergessen habe)
-
Schlangenmensch schrieb:
Genau, aber wenn wir den Zahlenraum in R schauen, sehen wir A * -A <> 0, außer für A = 0. Das gilt auch für Binärzahlen übrigens, denn eine Binärzahl hat bekanntlich mehr als nur wahr und falsch.
Okay, sorry für meine Ungenauigkeit. Mit Binärzahl meinte ich den Zahlenraum der Bits und keine Kombination von beliebig vielen davon. Es sind also nur 0 und 1 da, und die Verknüpfungen AND und OR. Ich glaube dass {0,1,or} wie auch {0,1,and} eine Gruppe sind. Jetzt aber nur intuitiv geschätzt, die neutralen Elemente 0 oder 1 sind jedenfalls schonmal da. Mich interessieren eher Grenzfälle, die beweisen, dass es sich eben doch nicht um eine Gruppe handelt.
-
Was ist denn bei {0,1,or} das neutrale Element und was das inverse Element?
Sagen wir neutrales Element is 0, da
0 or 0 = 0
1 or 0 = 1Dann muss für das Inverse "i" gelten
1 or i = 0 => Widerspruch, es gibt kein Element das die Forderung erfüllt.
0 or i = 0Also, keine Gruppe!
-
Auch ganz wichtig: keine der Operationen + oder * beamt uns aus dem binären Zahlenraum Z[2]. Das sieht gruppentheoretisch gar nicht so schlecht aus.
-
Und bei"and" siehts auch schlecht aus. Neutrales Element ist die 1. Aber für 0*i = 1 wird daraus nix für das Inverse....
-
Schlangenmensch schrieb:
Was ist denn bei {0,1,or} das neutrale Element und was das inverse Element?
Sagen wir neutrales Element is 0, da
0 or 0 = 0
1 or 0 = 1Dann muss für das Inverse "i" gelten
1 or i = 0 => Widerspruch, es gibt kein Element das die Forderung erfüllt.
0 or i = 0Also, keine Gruppe!
Auf {0,1,or} bezogen:
Das neutrale Element ist: a or 0 = a, also: 0.
und das inverse Element ist: a or (not)a = 1, also 1.Die Verknüpfung beider ist "0 or 1", also 1. Passt!
Wer von uns liegt nun falsch?