{{htmlmetatags>metatag-robots=()
metatag-title=(XOR | ugBASIC User Manual)
metatag-keywords=(ugBASIC,Commodore 64,Commodore PLUS/4,ZX Spectrum)
metatag-description=(Pagina del manuale per XOR)
metatag-media-og:image=(:ugbasic:logo-ugbasic-fb.png)
metatag-og:title=(XOR | ugBASIC User Manual)
metatag-og:description=(Pagina del manuale per XOR)
}}
====== ugBASIC Manuale Utente ======
===== XOR =====
===== SINTASSI =====
= x OR y
==== SCOPO ====
Esegue una esclusione logica su due espressioni, come esclusione 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:
'''TRUE XOR TRUE = FALSE'''
'''TRUE XOR FALSE = TRUE'''
'''FALSE XOR TRUE = TRUE'''
'''FALSE XOR FALSE = FALSE'''
In generale, l'operatore ''XOR'' 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 ''XOR'' bit a bit, applicato a tutti i bit del numero, sarà equivalente all'operazione
logica. Nota che l'operatore ''XOR'' 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 XOR x THEN: PRINT "never executed" : ELSE : PRINT "always executed": ENDIF
==== ABBREVIAZIONE ====
Xr
==== DISPONIBILE SU ====
*
* Atari (400/800)
* Atari XL/XE
* Commodore 128 (MOS 8502)
* Commodore 128 (Zilog Z80)
* Commodore 64
* Commodore 64+REU
* TRS-80 Color Computer
* TRS-80 Color Computer 3
* ColecoVision
* Amstrad CPC 664
* Dragon 32
* Dragon 64
* Thomson MO5
* Thomson MO5
* Olivetti Prodest PC128
* Commodore PLUS/4
* SEGA SC-3000
* SEGA SG-1000
*
* VG-5000
* Commodore VIC-20
* ZX Spectrum 48
==== 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 [[https://github.com/spotlessmind1975/ugbasic/issues/new?title=SEGNALAZIONE SU XOR|aprire una segnalazione]] per questa parola chiave su GitHub. Grazie!===== POWERED BY =====
[[:it:ugbasic:user:index|{{ :ugbasic:user:logo-ugbasic.png?nolink&600 |}}]]