Logische Operatoren Priorität mit NAND, NOR, XNOR
Habe ich durchsucht das web, aber ich habe keine Lösung gefunden für dieses problem.
Was ist die logische Priorität für die Betreiber NAND
, NOR
und XNOR
?
Ich meine, wenn man bedenkt, wie z.B. mit dem Ausdruck
A AND B NAND C
die Betreiber sollten zuerst ausgewertet werden?
Offensichtlich NAND
übersetzt werden kann als NOT-AND
(wie NOR
ist NOT-OR
und XNOR
ist NOT-XOR
), aber
(A AND B) NAND C != A AND (B NAND C) = A AND NOT(B AND C)
Laut meinen Recherchen gibt es keine definierte Priorität für einen solchen Ausdruck, so denke ich, die einfachste Lösung ist die Bewertung der Operatoren entsprechend der Reihenfolge in der Sie im Ausdruck vorkommen, aber ich kann mich auch irren.
Irgendwelche Vorschläge?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese hängt tatsächlich davon ab, Ihre Vorrang-Regeln. Wenn es keine Reihenfolge (keine Rangfolge oder alles von der gleichen Bedeutung), es sollte von Links nach rechts gelöst. Hier ist ein Beispiel mit C++.
Operatoren definiert werden, die eine Sprache bietet, und dem, was Sie hier haben, scheint es nicht zu sein, eine formale Sprache, in solchen Fällen ist es oft angenommen wird, bewertet werden, da Sie von Links nach rechts gelesen.
Obwohl, können Sie den gleichen operator-Vorrang als verilog , oder schauen Sie auf wikipedia, die hat einen kleinen Tisch Rangfolge Häufig verwendet, für die Logik Operatoren
Wenn der Ausdruck geschrieben wird, die Art, wie es ist in der Frage genannten(ohne die Klammern dazwischen), es sollte gelöst werden, in der Reihenfolge, wie Sie geschrieben sind. Das ist der einzige richtige Weg, dies zu tun.
zB. Wenn seine schriftliche line
A NOR B XOR C
, Es bedeutet einfach(A NOR B) XOR C
Booleschen Operatoren haben Analoga in der konventionellen Arithmetik, also eine Möglichkeit, zu entscheiden, was den Vorrang-Regeln sein sollte, wird die Regeln beachten, die für herkömmliche Arithmetik, z.B.
AND
ist Analog zur Multiplikation, währendOR
ist Analog zu der addition, daherAND
sollte haben eine höhere Priorität alsOR
. Wenn man sich an die Operatorrangfolge-Tabelle für eine Sprache wie C oder C++ - Sie werden sehen, dass dies tatsächlich der Fall ist, in diesen und anderen verwandten Sprachen.Ich vermute, dies könnte die Sprache bestimmten, ALLE Betreiber müssen eine Rangfolge definiert oder implizit durch ein bestimmtes-Implementierung.
Hier ist, was ein anderer Ort ist dazu zu sagen.