Concetti Chiave
- Gli operatori logici in C generano risultati booleani, restituendo 1 per vero e 0 per falso.
- Gli operatori bitwise operano su dati binari e possono essere utilizzati solo con tipi di dato int.
- Il primo operando in un'espressione logica può determinare l'esito senza valutare il secondo, grazie allo short-circuit evaluation.
- Lo shift a sinistra e a destra modifica i bit di un operando, con vari risultati a seconda della macchina e del tipo di shift eseguito.
- Gli operatori logici includono AND, OR, NOT, mentre gli operatori bitwise includono AND, OR, XOR e operatori di shift.
! -> NOT logico dell’operando unario -> !x
&& -> AND logico tra due operandi -> x&&y
|| -> OR logico tra due operandi -> x||y
Gli operatori logici sono tutti operatori binari.
Gli operatori logici sono di tipo booleano, generano quindi un risultato 1(se vero) o 0(se falso) di tipo int, ma in C 0=falso e ≠ 0 è vero.
Se il primo operando è sufficiente a determinare il valore dell’espressione il secondo non è valutato (provocando uno short-circuit evaluation).
˜ -> Calcola il complemento ad uno dell'operando Unario ->˜x
& -> Calcola l'AND logico bit a bit tra i due operandi -> x&y
| -> Calcola l'OR logico bit a bit tra i due operandi -> x|y
^ -> Calcola lo XOR logico bit a bit tra i due operandi -> x^y
Calcola la shift a sinistra del primo operando per un numero di bit pari al valore del secondo operando -> x
>> -> Calcola la shift a destra del primo operando per un numero di bit pari al valore del secondo operando -> x>>y
Gli operatori bitwise, permettono di effettuare operazioni logiche su dati rappresentanti da cifre binarie e possono essere utilizzati solo con tipi di dato int.
Lo shift a sinistra a
Lo shift a destra a>>b equivale alla divisione per 2^b. Eseguendo lo shift a destra di una certa quantita signed, il risultato dipende dalla macchina, su alcune i bit rimasti liberi vengono posti uguali al bit di segno (shift aritmetico) mentre su altre vengono posti uguali a 0 (shift logico).
Domande da interrogazione
- Qual è la differenza tra operatori logici e operatori bitwise?
- Cosa significa "short-circuit evaluation" negli operatori logici?
- Come influisce lo shift a destra sui risultati in base alla macchina?
Gli operatori logici operano su valori booleani e generano risultati di tipo int (0 per falso e ≠ 0 per vero), mentre gli operatori bitwise effettuano operazioni logiche su dati rappresentati da cifre binarie e possono essere utilizzati solo con tipi di dato int.
La "short-circuit evaluation" si verifica quando il primo operando è sufficiente a determinare il valore dell'espressione, quindi il secondo operando non viene valutato, ottimizzando così il processo di calcolo.
Lo shift a destra di un valore signed può produrre risultati diversi a seconda della macchina: in alcune, i bit liberi vengono riempiti con il bit di segno (shift aritmetico), mentre in altre vengono riempiti con 0 (shift logico).