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

  1. Qual è la differenza tra operatori logici e operatori bitwise?
  2. 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.

  3. Cosa significa "short-circuit evaluation" negli operatori logici?
  4. 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.

  5. Come influisce lo shift a destra sui risultati in base alla macchina?
  6. 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).

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community