NOT
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
Bedingungen und logische Verknüpfungen
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
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.