Appunti di informatica
Lezione 2
anno accademico 2015-2016
Mario Verdicchio
Sistema binario e logica
•  C’è un legame tra i numeri binari (0,1) e la
logica, ossia la disciplina che si occupa del
ragionamento
•  Noi ragioniamo intorno a delle affermazioni,
che possono essere vere oppure false*
•  I valori di verità delle affermazioni sono due:
vero o falso e possiamo costruire una
codifica binaria
•  0 corrisponde al falso, 1 al vero
*si tratta naturalmente di un’idealizzazione: esistono anche affermazioni dal valore di
verità incerto o impossibile da verificare
Codifica binaria
• 
• 
• 
• 
• 
• 
• 
• 
Codifica: corrispondenza biunivoca tra un insieme di elementi e un insieme
di numeri naturali
Per “biunivoca” si intende una corrispondenza tra due insiemi (chiamati
dominio e codominio) che è sia iniettiva sia suriettiva
Una corrispondenza si dice “iniettiva” quando a elementi diversi del dominio
corrispondono elementi diversi del codominio
Una corrispondenza si dice “suriettiva” quando tutti gli elementi del
codominio sono coinvolti nella corrispondenza
In un corrispondenza biunivoca, quindi, a ogni elemento del dominio
corrisponde uno e un solo elemento del codominio e viceversa
In una codifica, gli elementi del codominio sono numeri naturali
Un esempio di codifica nella vita quotidiana è il sistema di immatricolazione
in un’università: a ogni studente corrisponde una e una sola matricola e a
una matricola corrisponde uno e un solo studente
Una codifica in cui il codominio è costituito da due soli elementi si dice
codifica binaria
Operatori logici
•  Come in algebra si eseguono operazioni sui
numeri per ottenere altri numeri (esempio
banale: applichiamo l’operazione somma a 3
e 5 e otteniamo 8) così in logica si eseguono
operazioni sui valori di verità
•  Le operazioni sui valori di verità si eseguono
mediante i cosiddetti operatori logici:
congiunzione, disgiunzione, negazione
Congiunzione
•  Date due affermazioni A e B, applicando
una congiunzione si ottiene
un’affermazione composta che indichiamo
con “A e B” (oppure “A and B”, “A && B”,
“A∧B”) che è vera solo quando sia A sia B sono vere, e falsa in tu8 gli altri casi Disgiunzione
•  Date due affermazioni A e B, applicando
una disgiunzione si ottiene
un’affermazione composta che indichiamo
con “A o B” (oppure “A or B”, “A || B”,
“A∨B”) che è falsa solo quando sia A sia B sono false, e vera in tu8 gli altri casi Negazione
•  Date una affermazione A, applicando una
negazione si ottiene un’affermazione
composta che indichiamo con “non A” (oppure
“not A”, “!A”, “¬A”) che è falsa quando A è vera e viceversa •  A differenza di congiunzione e disgiunzione, che sono operatori binari perché si applicano a due operandi, la negazione è un operatore unario perché si applica a un solo operando Disgiunzione esclusiva
•  Chiamato anche “or esclusivo” e indicato
con “xor” (oppure ⊕), è l’operatore logico
con cui costruire una affermazione “A xor
B” che è vera quando A (oppure B) è vera
e l’altra è falsa, mentre è falsa quando sia
A sia B hanno lo stesso valore di verità
Tavole di verità
•  Con le tavole di verità si possono
rappresentare graficamente le definizioni
dei diversi operatori logici
Precedenze degli operatori
•  ! precede &&, che precede ||, che precede ⊕
•  !A&&B||C è equivalente a ((!A)&&B)||C
•  Le parentesi vincono sulle precedenze:
in !((A||B)&&C) la disgiunzione viene
eseguita per prima, poi la congiunzione,
da ultimo la negazione
Uso delle tavole di verità
•  Le tavole di verità possono essere usate
per dimostrare l’equivalenza di certe
affermazioni
•  Due affermazioni si dicono (logicamente)
equivalenti quando hanno lo stesso valore
di verità in tutti i casi
•  Ad esempio, A xor B è equivalente a (A or B) and not(A and B)
Altre equivalenze logiche
• 
• 
• 
• 
• 
• 
notA and A ≡ falso
notA or A ≡ vero
falso and A ≡ falso
falso or A ≡ A
vero or A ≡ vero
vero and A ≡ A
•  not(A and B) ≡ not A or not B
•  not(A or B) ≡ not A and not B
•  Tramite le equivalente logiche
certe affermazioni possono
essere semplificate in
affermazioni equivalenti
•  Ad esempio:
(not A and A) or (not B and C)
è equivalente a
not B and C
Regole di inferenza
•  Una regola di inferenza è un meccanismo
con cui ottenere da una o più affermazioni
una nuova affermazione. Ad esempio:
A
B
A∧B
•  La regola “introduzione di congiunzione”
dice che, a partire da A e B, possiamo
ottenere A∧B.
Regole di inferenza corrette
•  Una regola di inferenza si dice corretta se, a partire da
affermazioni vere, ci permette di ottenere affermazioni
vere
•  La regola “introduzione di congiunzione” è corretta. Lo
si può verificare mediante opportune tavole di verità
•  Una regola come “eliminazione di disgiunzione”,
invece, non è corretta:
A∨B
A
perché esiste un caso in cui A∨B è vera ma A è falsa
•  A noi interessano solo regole di inferenza corrette
•  La equivalente logiche sono un caso speciale di regole
di inferenza
Uso della logica in informatica
•  Tipicamente i sistemi informatici sono attivati
per eseguire delle operazioni
•  A volte alcune operazioni devono essere
eseguite solo se certe condizioni si verificano
•  Tali operazioni si chiamano istruzioni
condizionali
•  Le condizioni che devono essere verificate
sono di fatto affermazioni che all’istante della
verifica hanno un valore di verità (cioè sono
vere oppure false)
Condizioni semplici
•  Si definisce condizione semplice
un’affermazione che confronta due valori
•  Ha tipicamente la forma:
valore – operatore di confronto – valore
•  Esempi (con relativo valore di verità):
4 < 10 (vera)
45 ≥ 98 (falsa)
x < 100 (dipende dal valore di x al momento
della verifica)
Condizioni composte
•  Si costruisce una condizione composta a
partire da condizioni semplici per mezzo di
operatori logici
•  Esempi [e relativi valori di verità]:
(4 < 10) and (50 ≥ 400) [falsa]
(10 ≤ 10) or (100 > 100) [vera]
not (x ≤ 5) [dipende dal valore di x]
Tipi di condizioni in base alla verità
•  Tautologie: condizioni, come notA or A, che
sono sempre vere (qualunque sia il valore di
A)
•  Contraddizioni: condizioni, come notA and A,
che sono sempre false (qualunque sia il
valore di A)
•  Tutte le altre condizioni che possono essere
sia vere sia false, a seconda dei valori delle
loro componenti, si dicono contingenze
Porte logiche (1)
•  Negazione, NOT, !
IN OUT 0 1 1 0 IN OUT Porte logiche (2)
•  Congiunzione, AND, &&
IN1 IN2 OUT= IN1 AND IN2 0 0 0 0 1 0 1 0 0 1 1 1 IN1 OUT IN2 Porte logiche (3)
•  Disgiunzione, OR, ||
IN1 IN2 OUT= IN1 OR IN2 0 0 0 0 1 1 1 0 1 1 1 1 IN1 OUT IN2 Porte logiche (4)
•  Disgiunzione esclusiva, XOR, ⊕
IN1 IN2 OUT= IN1 XOR IN2 0 0 0 0 1 1 1 0 1 1 1 0 IN1 OUT IN2 Codifica binaria
•  Il processore, abbiamo detto, lavora solo con
segnali elettrici
•  Segnali elettrici a valori alti di tensione vengono
fatti corrispondere al numero 1
•  Segnali elettrici a valori bassi di tensione vengono
fatti corrispondere al numero 0
•  Questa si chiama codifica binaria
•  Da questo punto di vista, il calcolatore opera solo
con due cifre: 0 e 1
•  Tutta l’informazione che un calcolatore elabora
viene espressa con queste due cifre, per mezzo
della codifica binaria
Numerazione: le basi
•  Noi siamo abituati a una numerazione basata
su 10 cifre: da 0 a 9
•  La base della nostra numerazione è il 10:
147 = 7 x 100 + 4 x 101 + 1 x 102
•  La base del sistema binario è il 2:
1011 = 1 x 20 + 1 x 21 + 0 x 22 + 1 x 23
Se si svolge il calcolo si ottiene il numero
che, in base 10, corrisponde a 1011 in base
2.
Base 2 -> Base 10
•  10112, ossia 1011 in base 2, a che numero in
base 10 corrisponde?
•  Stiamo cercando la x tale che: 10112 = x10
•  Basta ricordarsi la definizione di base 2:
1011 = 1 x 20 + 1 x 21 + 0 x 22 + 1 x 23 = 11
•  Perciò 1011 in base 2 vuol dire 11 in base 10:
10112 = 1110
•  Il “nostro” 11 è per il calcolatore 1011
Base 10 -> Base 2
•  Il metodo per esprimere in base 2 un
numero dato in base 10 è il seguente
•  Cerchiamo la x tale che: 2510 = x2
•  Si procede con una sequenza di divisioni
per 2, fintantoché il quoziente non diventa
0, e scrivendo la sequenza dei resti in
ordine inverso
Come si scrive 25 in base 2?
• 
• 
• 
• 
• 
• 
25 : 2 = 12 con resto 1
12 : 2 = 6 con resto 0
6 : 2 = 3 con resto 0
3 : 2 = 1 con resto 1
1 : 2 = 0 con resto 1
Una volta ottenuto il quoziente pari a 0,
scriviamo i resti in ordine inverso:
2510 = 110012
Verifica del metodo
•  11001 è davvero la codifica in base 2 di
25?
•  Basta svolgere i calcoli basati sulla
definizione di sistema binario
•  110012 = 1 x 20 + 1 x 23 + 1 x 24 = 1 + 8 +
16 = 2510 (gli addendi con lo 0 sono stati
omessi perché ovviamente non influiscono
sulla somma)
Numeri binari in memoria
•  In un calcolatore, i numeri binari sono
tipicamente memorizzati in sequenze di
caselle (note anche come parole) di
lunghezza fissa dipendente dalla struttura
del calcolatore stesso.
•  Ad esempio, una parola di 4 bit può
contenere il numero 01012
0 1 0 1 Combinazioni possibili di numeri
•  Una parola di 4 bit può contenere 24 = 16
numeri binari diversi: da 0000 a 1111
•  In generale, una parola di n bit può
contenere 2n numeri binari diversi
Dimensioni delle memorie
•  8 bit = 1 Byte (1B)
•  210 Byte = 1024 Byte = 1 KiloByte (1KB)
•  220 Byte = 1048576 Byte = 1 MegaByte (1MB)
•  230 Byte = 1073741824 Byte = 1 GigaByte (1GB)
•  240 Byte = 1099511627776 Byte = 1 TeraByte (1TB)
Dimensioni delle memorie (2)
•  Oramai è sempre più diffusa la seguente
approssimazione:
•  1000 (103) Byte (o bit) = 1 KiloByte o KiloBit
(1KB o 1Kb)
•  1000000 (106) Byte (o bit) = 1 MegaByte o
MegaBit (1MB o 1Mb)
•  1 miliardo (109) Byte (o bit) = 1 GigaByte o
GigaBit (1GB o 1Gb)
•  1000 miliardi (1012) Byte (o bit) = 1 TeraByte
o TeraBit (1TB o 1Tb)