NOT
NOT | |
Syntax: | NOT <Ausdruck> |
Parameter | |
<Ausdruck>: numerischer Ausdruck im Wertbereich von -32768 bis +32767 | |
Einordnung | |
Typ: | Operator |
Kontext: | Logische Verknüpfung |
Aufgabe: | logische oder bitweise Negation |
Abkürzung: | nO |
Token: | $a8 (168) |
Verwandte Befehle | |
AND, OR |
Anmerkung: Dieser Artikel beschreibt den BASIC-Operator NOT unter BASIC V2 des Commodore 64.
Der Operator NOT kehrt bei einem Vergleich innerhalb einer IF...THEN... Anweisung, die Aussage des Vergleichs um. D.h. ein Vergleich, der WAHR ergibt, wird mit dem vorangestellten NOT-Operator UNWAHR (logische Negation).
Außerdem kann mit dem Operator NOT die Boole'sche Operation Negation durchgeführt werden: Die Bits des binär dargestellten Parameterwertes werden umgedreht, also eine '0' zu '1' und eine '1' zu '0' (entspricht dem Einerkomplement des Wertes).
Dabei kann nur der Zahlenbereich von -32768 bis +32767 verwendet werden, ansonsten erscheint die BASIC-Fehlermeldung ?ILLEGAL QUANTITY ERROR. Das liegt daran, dass der BASIC-Interpreter bei Boole'sche Operationen grundsätzlich nur mit vorzeichenbehafteten 16-Bit Integer-Werten rechnet.
Beispiele[Bearbeiten | Quelltext bearbeiten]
Bedingungen und logische Verknüpfungen[Bearbeiten | Quelltext bearbeiten]
IF NOT A=1 AND NOT C=0 THEN PRINT "HALLO"
PRINT wird ausgeführt, wenn die Variable A nicht gleich 1 und die Variable C nicht gleich 0 ist.
IF NOT A$<>"SAMSTAG" THEN PRINT A$
PRINT wird ausgeführt, wenn die Variablen A$ den Text "SAMSTAG" enthält.
Bitoperationen und Einerkomplement[Bearbeiten | Quelltext bearbeiten]
PRINT NOT(2) (Ergebnis: -3) PRINT NOT(1) (Ergebnis: -2) PRINT NOT(0) (Ergebnis: -1) PRINT NOT(-1) (Ergebnis: 0) PRINT NOT(-2) (Ergebnis: 1)
Nur genau der Wert -1 (entspricht einem "WAHR") ergibt negiert 0 (entspricht "UNWAHR").
Andere Werte als 0 werden, z.B. vom IF-Befehl, stets als "WAHR" aufgefasst.
POKE 53265,PEEK(53265) AND NOT 32
Löscht Bit 5 im entsprechenden VIC-Register und deaktiviert damit einen eventuell aktiven Grafikmodus:
Das Register wird mit der Bitmaske 11011111 UND-verknüpft, d.h. wo sich eine '0' befindet, wird das dort befindliche Bit gelöscht, wobei die anderen Bits unberührt bleiben.
Weblinks[Bearbeiten | Quelltext bearbeiten]
Wikipedia: Einerkomplement |
ABS | AND | ASC | ATN | CHR$ | CLOSE | CLR | CMD | CONT | COS | DATA | DEF | DIM | END | EXP | FN | FOR | FRE | GET | GET# | GOSUB | GOTO | IF | INPUT | INPUT# | INT | LEFT$ | LEN | LET | LIST | LOAD | LOG | MID$ | NEW | NEXT | NOT | ON | OPEN | OR | PEEK | POKE | POS | PRINT | PRINT# | READ | REM | RESTORE | RETURN | RIGHT$ | RND | RUN | SAVE | SGN | SIN | SPC | SQR | STATUS/ST | STEP | STOP | STR$ | SYS | TAB | TAN | THEN | TIME/TI | TIME$/TI$ | TO | USR | VAL | VERIFY | WAIT