title: Booleano (informatica)
text: # Booleano (informatica)
  
  In informatica, quello booleano è un tipo di dato i cui unici due possibili valori rappresentano il valore di verità in un'algebra di Boole. Tipicamente questi valori sono indicati con i termini inglesi "true" e "false" (rispettivamente "vero" e "falso") oppure come 1 e 0. Il nome deriva da George Boole.
  
  Una variabile contenente un dato booleano è detta variabile booleana.
  
  ## Definizioni
  
  In alcuni linguaggi, come il C, questo tipo di dato non esiste in quanto nelle espressioni logiche si assume che falso corrisponda a 0 e vero a qualsiasi valore diverso da 0.
  
  In un elaboratore che segue lo schema dell'architettura di von Neumann nessun dato può essere di un solo bit. Nel processore 8086 il falso e il vero vengono rispettivamente rappresentati come:
  
  * 0000 0000;
  * 1111 1111.
  
  Formalmente, quindi, il valore "vero" viene indicato con "-1", essendo esso il complemento a uno (ovvero la negazione bit a bit) di 0.
  
  ## Operazioni
  
  ### 1 operando
  
  L'unica operazione possibile con i valori booleani è la negazione (detta anche complemento) che molto spesso è indicata con NOT, ! o ~.
  
  Si definisce:
  
  * NOT falso = vero
  * NOT vero = falso
  
  ### 2 operandi
  
  Esistono varie operazioni, le principali sono: EQV, AND, OR, XOR. Tutte queste funzioni hanno 2 operandi (booleani) in ingresso e producono un output booleano.
  
  Nella maggior parte dei linguaggi vengono indicati anche con i simboli:
  
      EQV== AND&& OR|| XOR^
  
  ## Nei linguaggi di programmazione
  
  Nei linguaggi di programmazione più recenti (es: C++, Java) è possibile dichiarare variabili di tipo booleano, anche se, nessuna di esse occupa veramente un bit nella memoria (non è possibile allocare un singolo bit). Il compilatore si occupa di accorpare più variabili booleane per ottimizzare lo "spreco" di 7 bit. Ad esempio in C++:
  
  Quando questo codice verrà compilato, molto probabilmente, il compilatore allocherà una variabile di tipo intero e il primo bit lo utilizzerà per A, il secondo per B e il terzo per C, "perdendo" i restanti 4 bit.
  
  