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 verita in tutti i casi Ad esempio, A xor B e 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 IN2 OUT
Porte logiche (3) Disgiunzione, OR, IN1 IN2 OUT= IN1 OR IN2 0 0 0 0 1 1 1 0 1 1 1 1 IN1 IN2 OUT
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 IN2 OUT
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 10 0 + 4 x 10 1 + 1 x 10 2 La base del sistema binario è il 2: 1011 = 1 x 2 0 + 1 x 2 1 + 0 x 2 2 + 1 x 2 3 Se si svolge il calcolo si ottiene il numero che, in base 10, corrisponde a 1011 in base 2.
Base 2 -> Base 10 1011 2, ossia 1011 in base 2, a che numero in base 10 corrisponde? Stiamo cercando la x tale che: 1011 2 = x 10 Basta ricordarsi la definizione di base 2: 1011 = 1 x 2 0 + 1 x 2 1 + 0 x 2 2 + 1 x 2 3 = 11 Perciò 1011 in base 2 vuol dire 11 in base 10: 1011 2 = 11 10 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: 25 10 = x 2 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: 25 10 = 11001 2
Verifica del metodo 11001 è davvero la codifica in base 2 di 25? Basta svolgere i calcoli basati sulla definizione di sistema binario 11001 2 = 1 x 2 0 + 1 x 2 3 + 1 x 2 4 = 1 + 8 + 16 = 25 10 (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 0101 2 0 1 0 1
Combinazioni possibili di numeri Una parola di 4 bit può contenere 2 4 = 16 numeri binari diversi: da 0000 a 1111 In generale, una parola di n bit può contenere 2 n numeri binari diversi
Dimensioni delle memorie 8 bit = 1 Byte (1B) 2 10 Byte = 1024 Byte = 1 KiloByte (1KB) 2 20 Byte = 1048576 Byte = 1 MegaByte (1MB) 2 30 Byte = 1073741824 Byte = 1 GigaByte (1GB) 2 40 Byte = 1099511627776 Byte = 1 TeraByte (1TB)
Dimensioni delle memorie (2) Oramai è sempre più diffusa la seguente approssimazione: 1000 (10 3 ) Byte (o bit) = 1 KiloByte o KiloBit (1KB o 1Kb) 1000000 (10 6 ) Byte (o bit) = 1 MegaByte o MegaBit (1MB o 1Mb) 1 miliardo (10 9 ) Byte (o bit) = 1 GigaByte o GigaBit (1GB o 1Gb) 1000 miliardi (10 12 ) Byte (o bit) = 1 TeraByte o TeraBit (1TB o 1Tb)