|
Appunti informatica |
|
Visite: 1449 | Gradito: | [ Picolo appunti ] |
Leggi anche appunti:Cast e conversioni di tipoCast e conversioni di tipo In una espressione è sempre possibile avere operandi Allocazione dinamica della memoriaAllocazione dinamica della memoria Quando è dichiarata una variabile, il compilatore L'accessibilitÀ e la durata delle variabiliL'accessibilità e la durata delle variabili In C le variabili possono essere |
Gli operatori logici su bit consentono di porre in relazione due valori mediante un confronto effettuato bit per bit. Consideriamo l'operatore di prodotto logico, o and su bit. Quando due bit sono posti in AND, il risultato è un bit nullo a meno che entrambi i bit valgano . La tabella illustra tutti i casi possibili nel prodotto logico di due bit, a seconda dei valori che cisacuno di essi può assumere. L'operazione consistente nel porre in AND due valori è spesso indicata col nome di 'mascheratura', in quanto essa ha l'effetto di nascondere in modo selettivo alcuni bit: in particolare viene convenzionalmente chiamato 'maschera' il secondo valore. Se nella maschera è presente uno zero, nel risultato c'è sempre uno zero in quella stessa posizione, mentre un 1 nella maschera lascia inalterato il valore del bit originario. Supponiamo, ad esempio, di voler considerare solo gli 8 bit meno significativi di un valore a 16 bit:
unsigned word;
char byte;
word = 2350;
byte = word & 0xFF;
Il valore , espresso in 16 bit, risulta , mentre FFh . L'operazione di prodotto logico è rappresentabile come
0000100100101110 &
ed il risultato è . Dall'esempio si trae inoltre che il simbolo dell'operatore di and su bit è il carattere '&': il contesto in cui viene utilizzato consente facilmente di distinguerlo a prima vista dall'operatore address of, che utilizza il medesimo simbolo pur avendo significato completamente diverso (pag.
Più sottile appare la differenza dall'operatore di and logico, sebbene questo abbia grafia differente ('&&', pag. ). L'and su bit agisce proprio sui singoli bit delle due espressioni, mentre l'and logico collega i valori logici delle medesime (vero o falso). Ad esempio, l'espressione
((a > b) && c)
restituisce un valore diverso da se a è maggiore di b e, contemporaneamente, c è diversa da . Invece, l'espressione
((a > b) & c)
AND |
|
|
|
|
|
|
|
|
restituisce un valore diverso da se a è maggiore di b e, contemporaneamente, c è dispari. Infatti un'espressione vera restituisce , e tutti i valori dispari hanno il bit meno significativo ad , pertanto il prodotto logico ha un bit ad (quello meno significativo, ed è dunque diverso da ) solo se entrambe le condizioni sono vere.
OR |
|
|
|
|
|
|
|
|
L'operatore di or su bit è invece utilizzato per calcolare quella che viene comunemente indicata come somma logica di due valori. Quando due bit vengono posti in OR, il risultato è sempre , tranne il caso in cui entrambi i bit sono a . Il comportamento dell'operatore di somma logica è riassunto nella tabella. Si noti che il concetto di maschera può essere validamente applicato anche alle operazioni di OR tra due valori, in particolare quando si voglia assegnare il valore ad uno o più bit di una variabile. Infatti la presenza di un nella maschera porta ad il corrispondente bit del risultato, mentre uno nella maschera lascia inalterato il bit del valore originario (questo comportamento è l'esatto opposto di quello dell'operatore '&
L'operazione di OR sui bit dei valori e FFh) è rappresentabile come segue:
e restituisce . Il simbolo dell'operatore di or su bit è ' ', e non va confuso con quello dell'operatore di or logico (' ', pag. ); del resto tra i due operatori esistono differenze di significato del tutto analoghe a quelle accennate poco fa circa gli operatori di and su bit e di and logico.
XOR |
|
|
|
|
|
|
|
|
Esiste un terzo operatore logico su bit: l'operatore di xor su bit, detto anche 'or esclusivo'. Il suo simbolo è un accento circonflesso (' '). Un'operazione di XOR tra due bit fornisce risultato quando i due bit hanno uguale valore (cioè sono entrambi o entrambi ), mentre restituisce 1 quando i bit hanno valori opposti (il primo ed il secondo , o viceversa): la tabella evidenzia quanto affermato. Se ne trae che la presenza di un in una maschera utilizzata in XOR, dunque, inverte il bit corrispondente del valore originario. Rispolverando ancora una volta (con la solenne promessa che sarà l'ultima) l'esempio del valore mascherato con un , si ha:
Il risultato è
Appunti su: |
|