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:
Algoritmo una sequenza finita ordinata di passi non
ambigui ed eseguibili che definiscono un'attività di
lunghezza finita.
Programmi:
Programmi la rappresentazione di un algoritmo
compatibile con la macchina.
Software:
Software i programmi, e gli algoritmi che
rappresentano (es. sistemi operativi).
Hardware:
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.
stesso
Operazioni Booleane
George Boole (1815-1864)
•
•
I computer rappresentano le informazioni
come sequenze di bit (binary digit o cifra
binaria o unità binaria).
Operazioni Booleane:
–
–
–
–
•
AND;
OR;
XOR (eXclusive OR, OR esclusivo);
NOT.
Un 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
sull'ingresso
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=21 informazioni;
– 2 bit => 4=22 informazioni;
– 3 bit => 8=23 informazioni;
In generale:
– N bit => 2N informazioni.
• Esempio:
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.
10
Utilizzando questa codifica
è possibile rappresentare
qualunque numero intero
positivo.
Decoding the binary
representation 100101
0
Rappresentazione Binaria (2/2)
Considerato il numerale:
cn cn-1 … c1 c0
in cui ogni “ci” è la cifra “0” o “1”,
rappresenterà il numero:
c0*20 + c1*21 + … + cn-1*2n-1 + cn*2n
Decodifica di rappresentazioni Binarie
Esempi:
Il numerale “1011” denota il numero:
1*20 + 1*21 + 0*22 + 1*23 = 1110
il numerale “100101” denota il numero:
1*20 + 0*21 + 1*22 + 0*23 + 0*24 + 1*25 = 3710
il numerale “1010001” denota il numero:
1*20 + 0*21 + 0*22 + 0*23 + 1*24 + 0*25 + 1*26 = 8110
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
34510
e
cerchiamo
la
rappresentazione
binaria
corrispondente:
Leggendo i resti dal basso
verso l’alto si ha la
rappresentazione binaria
del numero 34510 .
345/2
= 172
resto 1
172/2
= 86
resto 0
86/2
= 43
resto 0
43/2
= 21
resto 1
21/2
= 10
resto 1
10/2
= 5
resto 0
5/2
= 2
resto 1
2/2
= 1
resto 0
1/2
= 0
resto 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
0101 +
0011 =
1000
25 +
21 =
46
011001 +
010101 =
101110
117 +
109 =
226
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
Notazione in Complemento a Due
•
•
Complemento a due viene utilizzato per rappresentare
ogni intero positivo e negativo.
Regole:
Regole
–
–
Il bit più significativo (più a sinistra) rappresenta il segno del
numero: “0” positivo, “1” negativo;
La rappresentazione di un numero negativo si ottiene in tre
passi:
•
•
•
Si rappresenta in complemento a due il numero positivo con lo stesso
valore assoluto del numero negativo da codificare;
Si invertono tutti i bit in tale rappresentazione, cioè si mette “1” dove
c’e’ “0” e viceversa;
Si 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
complemento a due 1011= -5.
1. Si esclude il primo bit (011);
2. Invertendo si ottiene: 100;
3. 1002 = 410;
4. 4 + 1 = 5.
Risultato finale “5”.
in
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
0010 +
1011 =
1101
+7
-5 =
+2
0111 +
1011 =
10010
Problema di overflow
Il problema della sottrazione è uguale al problema dell’addizione.
Il problema “7 - 5” equivale al problema “7 + (-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
=>
1010010011001000 =>
B5
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.
Rappresentazione del Testo (1/4)
•
•
•
•
In un calcolatore, un testo viene presentato come una lunga
stringa (sequenza) di bit.
Il metodo di codifica più utilizzato è il codice ASCII
(American Standard Code for Information Interchange).
nterchange
L’insieme dei simboli comunemente usati
può essere
codificato usando 7 bit,
bit che permettono la rappresentazione
di 27=128 configurazioni differenti (76 conf. nel codice
originario)
Oggi 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.
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.
ASCII
01101001
i
01101100
l
00000000
01110000
p
01101111
o
00101110
.
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 tecniche più diffuse per rappresentare le
immagini vengono classificate in due categorie:
tecniche bitmap e tecniche vettoriali.
L’immagine viene considerata come una matrice di
punti. Ogni punto è detto pixel (picture element)
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.
destra
•
Nelle 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,
rosso verde e blue (ogni componente un
byte)
Risoluzione:
Risoluzione indica la precisione con cui viene
effettuata la suddivisione di un’immagine in pixel (es.
una griglia di 640x480 pixel).
Domanda:
Domanda quanti bit servono per rappresentare 256
colori, per ciascun pixel? 8 bit => 28 = 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).
2457600)
Rappresentazione delle Immagini (3/3)
•
•
Svantaggio tecniche bitmap: difficilmente una immagine può essere
convertita in una dimensione qualsiasi.
Le 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).
Le tecniche vettoriali non sono in grado di produrre immagini di
qualità fotografica, ecco perchè nelle videocamere digitali di oggi
sono utilizzate tecniche bitmap.
–
–
–
–
•
Rappresentazione dei suoni
•
•
Metodo generico: campionare l'ampiezza dell'onda sonora a
intervalli regolari e nel registrare le serie di valori numerici ottenuti.
Frequenza di campionamento di 8000 campioni al secondo.
3
Rappresentazione dei suoni
•
•
•
Gli 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).
Segue, che ogni secondo di musica registrata in stereo richiede più
di un milione di bit.
Sistema 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,
byte
ciascuna caratterizzata da un indirizzo.
indirizzo
L’indirizzo,
indirizzo o locazione,
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.
consecutive
Organizzazione della Memoria (3/4)
Gli indirizzi sono espressi mediante numeri interi o
in notazione binaria.
binaria
Organizzazione della Memoria (4/4)
•
•
•
Memoria RAM (Random Access Memory): indica che
è possibile accedere individualmente ad ogni cella in
ordine casuale e con accesso diretto.
diretto
Il tempo necessario per accedere ad una cella di
memoria è lo stesso indipendentemente dalla posizione
della cella nella sequenza.
Operazioni sulle celle di memoria: lettura e scrittura.
Il numero totale di celle progettate è una potenza di 2.
N.B.:
1K= kilobyte = 210=1024 ~ 103, 1M = 220=1KK, 1G= 230=1KM
Es. 4 KB = 4x1024 = 4096 byte (4096 celle di memoria)
Scarica

Codifica e Memorizzazione delle Informazioni