{{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 |}}]]