Rappresentazione e Memorizzazione dei Dati Giuseppe Nicosia CdL in Matematica (Laurea Triennale) Facoltà di Scienze MM.FF.NN. Università di Catania
Bit e loro Memorizzazione
Definizioni Algoritmo: una sequenza finita ordinata di passi non ambigui ed eseguibili che definiscono un'attività di lunghezza finita. Programmi: la rappresentazione di un algoritmo compatibile con la macchina. Software: i programmi, e gli algoritmi che rappresentano (es. sistemi operativi). Hardware: dispositivi fisici. Lo sviluppo di algoritmi è quindi un obiettivo fondamentale dell informatica. Individuare un algoritmo per risolvere il problema equivale a risolvere il problema stesso.
Operazioni Booleane George Boole (1815-1864) I Operazioni Un computer rappresentano le informazioni come sequenze di bit (binary digitit o cifra binaria o unità binaria). Booleane: AND; OR; XOR (exclusive OR, OR esclusivo); NOT. dispositivo che, dati i valori di ingresso, produce l uscita di un operazione booleana è chiamato porta logica.
Operazioni Booleane 1. P AND Q => è vera solo quando P e Q sono vere (dove P e Q rappresentano asserzioni, ad esempio Questa è una frase. ); 2. P OR Q => è vera quando almeno una delle due è vera; 3. P XOR Q => è vera quando uno dei due è vera e l altro è falsa ( o P oppure Q ma non entrambi ); 4. NOT P => assume il valore di verità opposto a P.
Operazioni Booleane (2/2)
Rappresentazioni delle Porte Logiche AND e OR
Rappresentazioni delle Porte Logiche XOR e NOT
Un semplice Circuito flip-flop L ' i m p u l s o t e m p o r a n e o s u l l ' i n g r e s s o superiore ha portato il flip-flop a 1, e questo valore resterà tale anche dopo che l'ingresso superiore sarà riportato a 0.
Esempio (1/3)
Esempio (2/3)
Esempio (3/3) Analogamente, se si porta temporaneamente a 1 l'ingresso inferiore, si forza l'uscita del flipflop a diventare 0 e a rimanere tale anche dopo che il valore dell'ingresso inferiore sarà riportato a 0. Memorizzazione di bit.
Un altro modo di costruire un flip-flop
Rappresentazione delle Informazioni su di un calcolatore
Rappresentazione delle Informazioni L informazione viene rappresentata mediante sequenze di bit. Ogni parola, o testo, o dato numerico, o immagine, o suono viene codificato come configurazioni di bit.
Rappresentazione dei Valori Numerici (1/2) La notazione binaria è un modo di rappresentare i valori numerici usando solo le cifre 0 e 1, anziché tutte le cifre del sistema decimale. Attraverso 1 bit è possibile rappresentare due informazioni (una con 0 ed una con 1). Utilizzando una sequenza di 2 bit possiamo avere quattro codifiche distinte. Analogamente, utilizzando 3 bit possiamo rappresentare otto informazioni differenti.
Rappresentazione dei Valori Numerici (2/2) Riassumendo: 1 bit => 2=2 1 informazioni; 2 bit => 4=2 2 informazioni; 3 bit => 8=2 3 informazioni; In generale: N bit =>2 N informazioni. Esempio: Per rappresentare 57 informazioni è necessario utilizzare una sequenza di 6 bit.
Rappresentazione Binaria (1/2) Nel sistema di numerazione binario i numeri vengono codificati usando le due cifre 1 e 0 ed uno schema posizionale in cui si usa la base 2 al posto della base 10. Utilizzando questa codifica è possibile rappresentare qualunque numero intero positivo.
Decoding the binary representation 100101 0
Rappresentazione Binaria (2/2) Considerato il numerale: c n c n-1 c 1 c 0 in cui ogni c i è la cifra 0 o 1, rappresenterà il numero: c 0 *2 0 + c 1 *2 1 + + c n-1 *2 n-1 + c n *2 n
Decodifica di rappresentazioni Binarie Esempi: Il numerale 1011 denota il numero: 1*2 0 + 1*2 1 + 0*2 2 + 1*2 3 = 11 10 il numerale 100101 denota il numero: 1*2 0 + 0*2 1 + 1*2 2 + 0*2 3 + 0*2 4 + 1*2 5 = 37 10 il numerale 1010001 denota il numero: 1*2 0 + 0*2 1 + 0*2 2 + 0*2 3 + 1*2 4 + 0*2 5 + 1*2 6 = 81 10
Conversione dalla base 10 alla base 2 Bisogna dividere la base 10 per 2 fino a quando il quoziente intero della divisione è zero. Esempio: consideriamo il numerale 345 10 e cerchiamo la rappresentazione binaria corrispondente: Leggendo i resti dal basso verso l alto l si ha la rappresentazione binaria del numero 345 10. 345/2 172/2 86/2 43/2 21/2 10/2 5/2 2/2 1/2 = = = = = = = = = 172 86 43 21 10 5 2 1 0 resto resto resto resto resto resto resto resto resto 1 0 0 1 1 0 1 0 1
Un Algoritmo per trovare la rappresentazione binaria di un intero positivo
Operazioni sui numeri binari Lo stesso procedimento che utilizziamo per i numeri decimale può essere utilizzato per le operazioni di somma in base due. L unica differenza è che si devono effettuare i riporti quando la somma supera il valore 1. Regole di base:
Esempi di Somma Binaria 5 + 3 = 8 25 + 21 = 46 117 + 109 = 226 0101 + 0011 = 1000 011001 + 010101 = 101110 01110101 + 01101101 = 11100010
Esercizi sul Sistema Binario Convertire le seguenti rappresentazioni binarie nel formato in base 10 equivalente: a.101010, b. 100001, c. 10111, d. 0110, e. 11111 Convertire le seguenti rappresentazioni in base dieci nel formato binario equivalente: a. 32, b. 64, c. 96, d. 15, e. 27 Eseguire le seguenti somme in binario: a.32 + 27, b. 96 +15, c. 64 + 11
Complemento a due
Complemento a due +3 = 00000011 +2 = 00000010 +1 = 00000001 +0 = 00000000-1 = 11111111-2 = 11111110-3 = 11111101
Si Si Si Notazione in Complemento a Due Complemento a due viene utilizzato per rappresentare ogni intero positivo e negativo. Regole: Il La bit più significativo (più a sinistra) rappresenta il segno del numero: 0 positivo, 1 negativo; rappresentazione di un numero negativo si ottiene in tre passi: rappresenta in complemento a due il numero positivo con lo stesso valore assoluto del numero negativo da codificare; invertono tutti i bit in tale rappresentazione, cioè si mette 1 dove c e 0 e viceversa; somma 1 al LSB del risultato ottenuto al passo precedente.
Esempio di Notazione in Complemento a Due: da +5 a -5 Supponiamo di voler codificare in forma binaria il numero -5 : 1) La rappresentazione in complemento a due del numero +5 è 0101; 2) Invertendo tutti i bit si ottiene: 1010; 3) Sommando 1 si ottiene 1011, rappresentazione in complemento a due di -5.
Notazione in Complemento a Due Per effettuare la conversione inversa, si procede come segue: Se il primo bit è 0 il numero è positivo; Altrimenti: Si ignora il primo bit; Si invertono i restanti bit; Si somma 1 al numero ottenuto al passo precedente per ottenere il valore assoluto del numero negativo.
Esempio di Notazione in Complemento a Due: da -5 a +5 Consideriamo il numero binario in complemento a due 1011= -5. 1. Si esclude il primo bit (011); 2. Invertendo si ottiene: 100; 3. 100 2 = 4 10 ; 4. 4 + 1 = 5. Risultato finale 5.
Sistema di Notazione in Complemento a Due
Caso speciale 1 0 = 00000000 Bitwise not 11111111 Add 1 to LSB +1 Result 1 00000000 Overflow is ignored, so: - 0 = 0
Caso speciale 2-128 = 10000000 bitwise not 01111111 Add 1 to LSB +1 Result 10000000 So: -(-128) = -128! Monitor MSB (sign bit) It should change during negation
Somma Binaria con Notazione in Complemento a Due (1/2) +2-5 = -3 +7-5 = +2 0010 + 1011 = 1101 0111 + 1011 = 10010 Problema di overflow Il problema della sottrazione è uguale al problema dell addizione. Il problema 77-5 5 equivale al problema 77 + (-5).
Somma Binaria con Notazione in Complemento a Due (2/2)
Esercizi sul Sistema Binario con Notazione in Complemento a Due Convertire le seguenti rappresentazioni in complemento a due: a.00011, b.01111, c.11100, d.11010, e.00000, f.10000 Convertire le seguenti rappresentazioni in base dieci: a. 6, b.-6, c.-17, d.13, e.-1 Eseguire le seguenti somme: a.0101 + 0010, b. 1110 + 0011, c. 1010 + 1110
Rappresentazione in Notazione Esadecimale di numeri positivi
Notazione Esadecimale (1/3) Le sequenze di lunghe stringhe di bit (flussi di bit) sono facilmente soggette ad errori. La notazione esadecimale si basa sul fatto che le configurazioni di bit hanno lunghezza multipla di quattro. La notazione esadecimale impiega un unico simbolo per esprimere quattro bit.
Notazione Esadecimale (2/3)
Notazione Esadecimale (3/3) Esempi: 10110101 => B5 1010010011001000 => A4C8 Esercizi: Utilizzare la notazione esadecimale per rappresentare le seguenti configurazioni di bit: 0110101011110010 111010000101010100010111 01001000 Quali configurazioni di bit sono rappresentate dalle seguenti configurazioni esadecimali: 5FD97 610A ABCD 0100
Problema dell Overflow Il problema dell overflow si presenta quando il valore da rappresentare è esterno all intervallo di valori che possono essere rappresentati. Es. 5 + 4 = 9 utilizzando 4 bit. Con la notazione in complemento a due, si ottiene sommando due valori positivi o due negativi. Oggi si utilizzano configurazioni di 32 bit (2.147.483.647) per memorizzare i valori.
In Il L insieme Oggi Rappresentazione del Testo (1/4) un calcolatore, un testo viene presentato come una lunga stringa (sequenza) di bit. metodo di codifica più utilizzato è il codice ASCII (American Standard Code for Information Interchange). dei simboli comunemente usati può essere codificato usando 7 bit, che permettono la rappresentazione di 2 7 =128 configurazioni differenti (76 conf. nel codice originario) si usa il formato esteso a 8 bit: Vantaggi: un codice che si adatta perfettamente alle celle di memoria, altre 128 configurazioni da usare per includere altre informazioni non usate nel codice ASCII iniziale Svantaggi: queste 128 configurazioni vengono interpretate in modo diverso dai diversi produttori SW/HW, ovvero problemi di compatibilità.
Rappresentazione del Testo (2/4) Sebbene 7 bit siano sufficienti per codificare l insieme dei caratteri, oggi il codice ASCII standard usa 8 bit.
Rappresentazione del Testo (3/4) Esempio: sia data la seguente sequenza: 011010010110110000000000011100000110111100101110 Il testo che essa codifica può essere ottenuto, dividendo la sequenza in gruppi di 8 bit e assegnare ad ogni gruppo il corrispondente carattere nella tabella ASCII. 01101001 01101100 00000000 01110000 01101111 00101110 i l p o.
Rappresentazione del Testo (4/4) Esempio: siano dati i numeri 2 e 5, la codifica nella tabella ASCII è: 2 = 00110010, 5 = 00110101 il risultato che si ottiene dalla somma è: 00110010 00110101 01100111 g
Rappresentazione del testo: Unicode e ISO Codice Unicode: usa una codifica univoca di 16 bit (65536 configurazioni), quanto basta a rappresentare i simboli più comuni cinesi e giapponesi. Codice ISO: 32 bit, in potenza miliardi di simboli.
Rappresentazione delle Immagini (1/3) Le L immagine Nelle tecniche più diffuse per rappresentare le immagini vengono classificate in due categorie: tecniche bitmap e tecniche vettoriali. viene considerata come una matrice di punti. Ogni punto è detto pixel (picture element) ed assume il valore di 0 o 1 per un immagine B/W. Si usa la convenzione che i pixel siano ordinati dal basso verso l alto e da sinistra verso destra. immagini a colori ogni pixel può essere rappresentato da una combinazione di bit, che indicano il colore corrispondente.
Rappresentazione delle Immagini (2/3) Il colore di ogni pixel viene registrato secondo tre componenti: rosso, verde e blue (ogni componente un byte) Risoluzione: indica la precisione con cui viene effettuata la suddivisione di un immagine in pixel (es. una griglia di 640x480 pixel). Domanda: quanti bit servono per rappresentare 256 colori, per ciascun pixel? 8 bit => 2 8 = 256 La rappresentazione di un immagine mediante la codifica dei pixel richiede una quantità notevole di spazio di memoria (es. 8 bit per pixel con risoluzione 640x480 => 307200 x 8 bit => 2457600).
Svantaggio Le Le Rappresentazione delle Immagini (3/3) tecniche bitmap: difficilmente una immagine può essere convertita in una dimensione qualsiasi. tecniche vettoriali consentono di risolvere il problema della scalatura: l'immagine è rappresentata da un insieme di linee e curve. Tale rappresentazione mantiene i dettagli relativi al modo in cui le linee e le curve sono tracciate dal dispositivo. Font scalabili: i vari font (tipi di caratteri) disponibili sulle stampanti e sui monitor sono codificati con tecniche vettoriali. Esempi: True type (Microsoft e Apple) simboli mediante formule matematiche; Postscript (Adobe Systems) caratteri e dati grafici più generali; CAD (computer aid design). tecniche vettoriali non sono in grado di produrre immagini di qualità fotografica, ecco perchè nelle videocamere digitali di oggi sono utilizzate tecniche bitmap.
Metodo Frequenza Rappresentazione dei suoni generico: campionare l'ampiezza dell'onda sonora a intervalli regolari e nel registrare le serie di valori numerici ottenuti. di campionamento di 8000 campioni al secondo. 3
Gli Segue, Sistema Rappresentazione dei suoni attuali CD musicali sono realizzati con una frequenza di campionamento di 44.100 campioni al secondo. Ogni campione è rappresentato con 16 bit (32 bit per le registrazioni stereo). che ogni secondo di musica registrata in stereo richiede più di un milione di bit. di codifica alternativo, più economico, MIDI (Musical Instrument Digital Interface) MIDI codifica lo strumento che deve eseguire una determinata nota per un certo periodo. Questo implica che una registrazione MIDI possa risultare molto diversa se eseguita su sintetizzatori differenti. Codifica meno costosa in termini di bit.
Memorizzazione dei Dati La Memoria Principale
Organizzazione della Memoria (1/4) Un qualunque calcolatore è costituito da un numero elevato di circuiti flip-flop, in grado di memorizzare un bit. Sono organizzati in unità dette celle,, o parole, con una dimensione tipica di 8 bit. 8 bit = 1 byte, ovvero una cella un byte Data una sequenza di bit: bit più significativo bit meno significativo
Organizzazione della Memoria (2/4) La memoria principale è una sequenza di byte, ciascuna caratterizzata da un indirizzo. L indirizzo, o locazione, di un byte nel dispositivo è il suo numero d ordine nella sequenza, a partire da 0. Un tale sistema di indirizzo consente l identificazione univoca di ciascuna cella. La memoria è divisa in celle di 1 byte => per archiviare una stringa di 16 bit si utilizzano 2 celle di memoria consecutive.
Organizzazione della Memoria (3/4) Gli indirizzi sono espressi mediante numeri interi o in notazione binaria.
Organizzazione della Memoria (4/4) Memoria Il Operazioni Memoria RAM (Random Access Memory): indica che è possibile accedere individualmente ad ogni cella in ordine casuale e con accesso diretto. tempo necessario per accedere ad una cella di memoria è lo stesso indipendentemente dalla posizione della cella nella sequenza. sulle celle di memoria: lettura e scrittura. Il numero totale di celle progettate è una potenza di 2. N.B.: 1K= kilobyte = 2 10 =1024 ~ 10 3, 1M = 2 20 =1KK, 1G= 2 30 =1KM Es. 4 KB = 4x1024 = 4096 byte (4096 celle di memoria)