Indice

ugBASIC Manuale Utente

AND

SINTASSI

   = x AND y

SCOPO

Esegue una congiunzione logica su due espressioni, come congiunzione bit a bit. Per i confronti gestiti come risultato booleano (TRUE o FALSE), result è TRUE se, e solo se, entrambe le espressioni vengono valutate come TRUE. La seguente tabella mostra come viene determinato il risultato:

'TRUE AND TRUE = TRUE' 'TRUE AND FALSE = FALSE' 'FALSE AND TRUE = FALSE' 'FALSE AND FALSE = FALSE'

In generale, l'operatore AND esegue un confronto bit a bit dei bit di due espressioni numeriche e imposta il bit corrispondente in result 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 AND bit a bit, applicato a tutti i bit del numero, sarà equivalente all'operazione logica. Nota che l'operatore AND valuta sempre entrambe le espressioni, il che può includere l'esecuzione di chiamate di routine.

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.

Se gli operandi sono costituiti da un'espressione SIGNED BYTE e da un'espressione numerica, converte l'espressione SIGNED BYTE in un valore numerico (-1 per TRUE e 0 per FALSE) ed esegue un'operazione bitwise. Quindi, il tipo di dati del risultato è un tipo numerico appropriato per i tipi di dati di entrambe le espressioni.

ESEMPIO

  IF x AND 1 THEN
     PRINT "x is odd"
  ELSE
     PRINT "x is even"
  ENDIF

ABBREVIAZIONE

 An

DISPONIBILE SU

PROBLEMI?

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!

POWERED BY