= NOT x
Esegue una negazione logica su due espressioni, come negazione bit a bit. Per
i confronti gestiti come risultato booleano (TRUE
o FALSE
), result è TRUE
se entrambe le espressioni sono valutate in modo diverso. La seguente
tabella mostra come viene determinato il risultato:
'NOT TRUE = FALSE
'
'NOT FALSE = TRUE
'
In generale, l'operatore NOT
esegue una negazione bit a bit dei bit dell'espressione
numerica e imposta il bit corrispondente in base alla tabella precedente.
Nota che ugBASIC utilizza la convenzione, molto comune nei BASIC degli anni '70 e '80, di considerare la logica booleana come implementata tramite il cosiddetto “complemento a due”.
In altre parole, il valore FALSE
è associato a un numero composto da tutti 0
,
in termini di bit. Il valore TRUE
è, invece, associato a un numero composto da tutti 1
,
sempre in termini di bit.
Secondo la rappresentazione del complemento a 2, un numero composto da tutti 1 è sempre
equivalente al numero -1
, indipendentemente dal numero di bit di cui è composto, mentre
un numero composto da tutti 0 è sempre equivalente a zero.
Secondo questa convenzione, c'è una coincidenza tra operazioni bit a bit e logiche: infatti,
un NOT
bit a bit, applicato a tutti i bit del numero, sarà equivalente all'operazione
logica.
Poiché gli operatori logici e bitwise hanno una precedenza inferiore rispetto ad altri operatori aritmetici e relazionali, tutte le operazioni bitwise devono essere racchiuse tra parentesi per garantire risultati accurati.
IF NOT x THEN PRINT "x is FALSE" ELSE PRINT "x is TRUE" ENDIF
Nt
Se si riscontra un problema nell'utilizzare questo comando, se si ritiene che vi sia un bug oppure che la spiegazione sia poco chiara, è possibile aprire una segnalazione per questa parola chiave su GitHub. Grazie!