Sei sulla pagina 1di 18

INFORMATICA

Un Personal Computer ( PC ) è progettato per avere più funzioni “general purpose”, può infatti
caricare più informazioni ed è utilizzabile per scopi differenti ( dispositivo generale ), inoltre
gestisce dati o programmi in modo omogeneo, a differenza dei soliti elaboratori elettronici. Il
suo funzionamento è basato su 2 elementi fondamentali:

  Istruzioni da eseguire;

 Dati da elaborare

Le sue componenti principali sono:

1) HARDWARE → componenti fisici del sistema, composto da una serie di elementi


funzionali già presenti in ogni PC, come unità di elaborazione, memoria centrale,
memoria di massa, bus di sistema, unità periferiche. Ci impone dei vincoli.
L’.informatica lavora su due binari, quindi l’hardware ci porta a lavorare in determinate
configurazioni.
2) SOFTWARE→ tutto ciò che non è hardware, comprendi i programmi eseguiti dal
sistema
- software d’ambiente (o di sistema): dedicato alla gestione dell’elaboratore, posso
trascurare i dettagli fisici dell’hardware (es. sistema operativo). Maschera la complessità
dell’hardware.
- software applicativo: racchiude tutte le informazioni associate alle applicazioni,
opera al di sopra del software di sistema e ha specifici scopi applicativi

MODELLO DI VON NEUMANN → modello generale di descrizione del funzionamento di un


calcolatore. Composto da 4 elementi funzionali:

1. CPU ( Unità di elaborazione ): è il cervello del calcolatore, coordina la macchina


interpretando ed eseguendo i programmi ( microprocessore)

2. Memoria centrale: è la memoria volatile RAM, contiene dati e istruzioni (programmi) poi
presi uno per volta e portati nella CPU

3. Interfacce delle periferiche: modulo che permette lo scambio di informazioni con il mondo
esterno senza specificare qual è la periferica ( es. stampante, tastiera, mouse, rete,
schermo...). Si considerano le interfacce delle periferiche invece delle periferiche stesse
perché ogni modello di interfaccia può essere utilizzato da più periferiche

4. Bus di sistema: collega gli altri elementi funzionali/componenti del calcolatore.

Funzionamento:
 Il processore estrae le istruzioni dalla memoria e le esegue, possono essere
manipolazione/operazioni di dati o trasferimento di dati

 I trasferimenti di dati attraverso elementi funzionali diversi avvengono attraverso il bus


di sistema

 Tutte le operazioni avvengono in modo sincrono rispetto a un orologio di sistema:


CLOCK, scandisce il periodo in cui viene fatta un’istruzione.
1 GHz -> frequenza: trovo il periodo, ovvero il tempo, di estrazione, interpretazione ed
esecuzione della memoria. Più e veloce il processore, più è piccolo il periodo e quindi
meglio è. Un quanto di tempo è il periodo massimo in cui il calcolatore riesce a
compiere una istruzione. Il periodo è uguale per tutte le istruzioni che possono essere
svolte in un tempo più breve

 Durante ogni intervallo di tempo l’unità di controllo ( parte del processore ) stabilisce la
funzione da svolgere

 La macchina opera in maniera sequenziale.

Architettura di un calcolatore:

3 bus differenti che compongono il bus di sistema: bus indirizzi (specifica indirizzo su cui si
deve lavorare), bus dati (trasferisce i dati da CPU alla RAM, e viceversa), bus di controllo
(specifica se è una lettura o una scrittura)

MEMORIA CENTRALE MM

La memoria centrale è organizzata in righe e colonne composte da 32 BIT. Ogni riga è una cella
dove sono organizzate le informazioni. L’accesso a tutte le info della RAM è identico in quanto a
tempo, però devo accedere ad ogni cella in modo indipendente quindi ogni cella ha un suo
indirizzo. Le informazioni sono lette per cella: il numero di BIT usato nell’indirizzo è lo spazio di
indirizzamento. Se ho k BIT, 2k è lo spazio di indirizzamento, insieme di tutti gli indirizzi
presenti. Ho un numero finito di indirizzi che posso gestire. Quindi ho due tipo di registri:
- dei dati  H BIT, danno la dimensione della quantità di informazioni,
- degli indirizzi  K BIT, contiene un indirizzo di memoria
L’indirizzo mette a disposizione la posizione della cella al cui interno ci sono i dati. MM
collezione di parole di memoria (dimensione della cella), informazione contenuta in un
determinato indirizzo. Le parole di memoria hanno tutte le medesime dimensioni, ovvero 32
BIT. Ogni parola è indirizzata ad un particolare indice.

Ci sono2 tipi diversi di memoria:

 RAM : concretizzazione tecnologica della MM, di tipo volatile (ogni volta che spengo il PC
perdo tutto ciò che non ho salvato), ad accesso casuale, mi consente di leggere e
scrivere memoria:

 ROM: memoria in sola lettura, salva le info che riguardano il calcolatore che non devono
essere modificate nemmeno in modo accidentale ( info che riguardano il boot,
accensione, potrei fare una modifica e il pc potrebbe non partire più ).

CPU ( Unità di elaborazione )

E’ il cuore del calcolatore, estrae istruzioni dalle memoria centrale, le interpreta e le esegue. E’
formato da:

o CU  unità di controllo, è la parte più importante di tutto il CPU, il suo cervello. Ha 3


funzioni principali:
1. Prelievo di istruzione dalla memoria;
2. Decodifica l’istruzione, ovvero capire l’istruzione che deve essere eseguita
3. Esegue l’istruzione.
o ALU  unità aritmetico logica. Esegue le operazioni, sia logiche che aritmetiche.
Ha 2 operandi/registri: A e B. Se voglio fare l’operazione A+B con il comando load prendo il
primo addendo da una cella della RAM, faccio lo stesso con il secondo addendo. Lancio poi
l’operazione somma nella CPU e poi con il comando store rimando il risultato dalla CPU
nella RAM. Il risultato va o in un terzo registro o direttamente nel registro A o B, che quindi
possono essere inputi e output
o REGISTRO DI ISTRUZIONE CORRENTE  è una piccola memoria che contiene l’istruzione
che sta per essere eseguita.
o REGISTRO CONTATORE DI PROGRAMMA  indirizzo della prossima istruzione, è necessario
che sappia dov’è nella memoria la prossima cella. Finito l’istruzione precedente CPU utilizza
l’indirizzo della prossimo istruzione che deve essere eseguirla
o REGISTRO DI STATO (CR)  tiene traccia di cosa sta facendo la ALU, evidenza delle
operazioni impossibili, controlla se uno dei due operandi è zero e confronta i due operandi
(< o >)
o CLOCK  scandisce il tempo all’interno del quale eseguo le istruzioni
o REGISTRO DATI (DR)  legge e scrive le parole collegate alla nella memoria centrale, duale
del registro dati nella memoria centrale
o REGISTRI INDIRIZZI (AR)  CONNESSO CON QUELLO DELLA MM,
REGISTRO INTERRUZIONE  funzioni per rispondere alle differenti introduzioni (come
quando si schiaccia un tasto)
o REGISTRI GENERALI  servono come supporto

Operazioni
aritmetiche e
logiche

o BUS DI SISTEMA collega CPU con le interfacce delle periferiche


o MASTER è il CPU, l’unico organo che ha il compito di controllare la comunicazione e il
coordinamento della macchina. Decide quali operazioni eseguire e con chi interagire tra
i componenti specifici che lo compongono, come la memoria e le altre periferiche.
o SLEVED  la memoria e tutte le periferiche che non hanno controllo, rimangono in
attesa e rispondono alle richieste del master.
LETTURA

La CPU dice di voler lavorare su un determinato indirizzo attraverso il bus di indirizzi alla
memoria centrale specificando con il bus di controllo l’operazione di lettura che la RAM deve
effettuare. La RAM accede alla cella e attraverso il bus dati il dato della cella viene propagato e
arriva alla CPU che lo mette nel registro dati. La RAM dice di aver finito attraverso il bus di
controllo e solo a quel punto la CPU può accedere al registro dati e leggere.

SCRITTURA

La CPU fornisce attraverso il bus indirizzi alla RAM l’indirizzo su cui voglio lavorare e il dato già
presente nel registro dati che voglio salvare a quel determinato indirizzo. La RAM salva quindi il
dato presente inizialmente nel registro dati nella cella corrispondente all’indirizzo richiesto.
Attraverso il bus di controllo la RAM dice di aver terminato la scrittura e solo a quel punto può
iniziare l’operazione successiva.
Ad esempio, nel registro dati di CPU è già presente il dato 70 che la RAM va a sostituire nella
cella che corrisponde all’indirizzo inviato dal bus degli indirizzi il cui dato è 123.

INTERFACCE DELLE PERIFERICHE

1. Registro dei dati→ dato da leggere/scrivere


2. Registro comandi→ comando da eseguire
3. Registro di stato→ stato della periferica

Solitamente periferiche come tastiera, mouse, stampante e monitor sono dispositivi esterni, si
trovano quindi fisicamente all’esterno del cabinet che racchiude il PC. Periferiche invece come
Floppy Disk e Hard Disk sono dispositivi interni. Le porte rappresentano le interfacce
periferiche.
Il cabinet detto anche chassis o case è il contenitore del computer. Può essere principalmente
di tre tipi:
- Il desktop, si sviluppa in orizzontale e si posiziona generalmente sotto il monitor
- Il tower, si sviluppa in verticale e può essere posto al di sotto della scrivania
- Il laptop

ARCHITETTURA DI UN PC

SCHEDA MADRE  elemento centrale del PC

Si tratta di un grande circuito stampato sul quale ci sono vari alloggiamento/spazio per i
componenti elettronici (contenitore della macchina di Von Neumann ). E’ modulare e
modulabile, posso infatti aumentare la RAM inserendo i blocchi di giga di cui voglio aumentare
la memoria negli appositi alloggiamenti arancioni (devo avere uno slot libero per poterlo fare).
La batteria a bottone tiene attiva una parte di elettronica che tiene conto del tempo che passa
(anche se il PC si spegne, quando lo riaccendo il PC sa sempre che ore sono e quanto tempo è
passato ). E’ molto piccola e quindi consuma molto poco ma come ogni batteria è destinata a
scaricarsi e quando questa finisce il PC continua ad accendersi ma non sa più che ore sono.

MICROPROCESSORE CPU

Si occupa dell’esecuzione di programmi e di gestire il PC stesso. Non riesco mai a vederlo


direttamente perchè è coperto da una ventola. Il CPU è formato da una parte liscia e da una
con dei piedini/chiodini, sono dei collegamenti. La ventola è sempre presente, si attacca al CPU
con una pasta termica e presente dei collegamenti che le permettono di accendersi ogni qual
volta si accende il PC. La ventola raffredda il processore buttando fuori aria calda. Per poter
svolgere il suo compito deve essere in grado di:

- Leggere e scrivere i dati nella memoria del computer RAM


- Riconoscere ed eseguire i comandi e le istruzioni fornite dai programmi
- Indicare alle altre componenti del computer cosa fare, in modo da organizzare e sincronizzare
le varie operazioni da svolgere.

MEMORIA

Banco di memoria RAM  presenta una parte metallica con i connettori che vanno infilati nei
vari alloggiamenti. La CPU interagisce con la memoria per leggere e scrivere. E’ fisicamente
posto dove sono conservate tutte le informazioni su cui si sta lavorando. Serve per contenere i
dati elaborati dai programmi e le istruzioni che costituiscono i programmi stessi. Solo la CPU è
in grado di distinguere se le istruzioni memorizzate indicano un’operazione da svolgere, oppure
sono dati su cui il programma deve agire.

Memoria di Cache consente sia la lettura che la scrittura. È un tipo di memoria RAM che
permette un accesso ai dati più veloce rispetto alla RAM stessa, perché in incorporata nel chip
della CPU quindi più vicina al processore velocizzando lo scambio dei dati. Ha ordine di
memoria di qualche k o mega, mentre la RAM ha ordine di memoria di GB. Nella Cache si ha un
sottoinsieme dei dati e delle istruzioni. Quindi CPU prima controlla se il dato è in Cache e se
non è presente accede ai dati della RAM. I dati nella Cache sono più aggiornati e
successivamente vengono aggiornati sulla RAM.

ROM  memoria in sola lettura, non può essere scritta. Contiene informazioni che non devono
mai essere modificate come l’accensione e la corretta manutenzione dell’unità di
elaborazzione. I livelli 1 e 0 che costituiscono i dati binari sono "incisi" durante il processo di
produzione del componente e non possono essere cambiati.

INTERFACCE DI Input/Output  porte di comunicazione tra il computer e le periferiche


In passato ogni periferica aveva bisogna di una sua porta specifica/interfaccia ma, dopo
l’avvento delle USB ( Universal Serial Bus ), si va sempre più verso una standardizzazione delle
periferiche.

 HARD DISK ( o disco fisso )  è il componente rigido dove vengono memorizzate in


modo permanente le informazioni elaborate. Sull’Hard Disk si trova il sistema operativo,
il software applicativo e i file dati. Fisicamente è composto da più dischi rivestiti da una
sostanza ferromagnetica che viene polarizzato quindi le informazioni rimangono anche
se non c’è corrente e da più testine di lettura che contemporaneamente leggono i dati
di dischi in rotazione ( come disco in vinile ), le testine si devono spostare nel punto in
cui voglio iniziare a leggere la magnetizzazione.

MEMORIZZAZIONE  le particelle di ferro (materiale ferromagnetico) sulla superficie del disco


sono disposte in modo casuale. Quando si deve memorizzare un dato, la testina di
lettura/scrittura si posiziona sulla traccia/settore opportuni. La scrittura si ottiene modificando
la polarizzazione magnetica delle particelle che rivestono ogni piatto, la lettura viene eseguita
rilevando la polarizzazione imposta dalle particelle.
Per l’operazione di scrittura vengono inviati impulsi elettrici sulla bobina avvolta lungo il nucleo
magnetico in modo da generare un campo elettromagnetico capace di orientare (cioè di
polarizzare) le particelle di ferro nel modo opportuno. Le bande magnetiche create si
susseguono sulla superficie del disco, senza interruzione.
L’operazione di lettura dei dati avviene invece in modo opposto: i banchi di molecole
polarizzate sul disco creano un campo magnetico capace di generare corrente nella bobina
della testina, quando questa si avvicina. La direzione della corrente dipende dalla polarità delle
bande. Rilevando la direzione della corrente, si capisce se la testina sta passando su uno 0
oppure su un 1.

FORMATTAZIONE  un hard disk è formato in modo tale da registrare dati su cilindri, tracce e
settori. I settori sono dei cerchi concentrici, le tracce sono una suddivisone dei settori stessi
mentre i cilindri sono dei gruppi di settori. Per poter utilizzare un hard disk è necessario
formattarlo, ma prima di questo è indispensabile partizionarlo e scrivere su di lesso le
informazione della/e partizione/i e del boot sector (informazioni riguardanti l’accensione).
Queste operazioni vengono gestite dal sistema operativo e in particolare da una parte del SO: il
file system. Il file system è diverso in base al tipo di sistema operativo che viene utilizzato.
Una volta formattati i dischi, il sistema operativo tiene traccia del posizionamento di ogni
singolo cluster di dati sulle tracce dei dischi e guida il movimento delle testine di lettura e
scrittura, avanti e indietro sulle varie tracce, mentre il disco è in rotazione in modo che possano
accedere rapidamente ad ogni singolo file. Comunque l’Hard Disk non potrebbe sostituire la
RAM per il ritardo causato dallo spostamento meccanico dei bracci delle testine che leggono i
dischi. Il numero dei settori e delle tracce in cui è suddiviso un disco rigido ne determina la
capacità. La combinazione di due o più settori su un’unica traccia costituisce un cluster .
La presenza di informazioni disordinate nel disco diminuisce le prestazione del computer e in
queste occasioni è necessario deframmentarlo per riordinare le varie informazioni ed evitare
che le testine debbano spostarsi in continuazione per leggere file.

 FLOPPY DISK  inizialmente erano utilizzati dischetti di 5,25 pollici inseriti in un


contenitore flessibile, successivamente sono stati sostituiti da dischetti di 3,5 pollici
contenuti in una protezione rigida. Sono poi stati sostituiti nel corso del tempo dalle USB
perché c’era un grande rischio di segnare e quindi danneggiare il floppy disk,
rendendolo così illeggibile.

 CD ROM  sono in grado di memorizzare fino a 650 MB di dati e CD audio e CD dati


sono fatti nello stesso modo, l’unica differenza è che quelli dati sono in grado di
memorizzare anche dati di programmi.

 DVD ( Digital Video Disk )  disco di plastica di aspetto simile a un CD. Utilizza un Laser
infrarosso a semiconduttore ( brucia il materiale ) capace di incidere e di leggere sulla
superficie del disco dei fori di dimensioni più piccole e su tracce più ravvicinate. A
seconda del ritorno di luce leggo 0 o 1 ( binario ) ed è per questo che quando segno la
parte trasparente di un CD o di un DVD non riesco più a leggere il contenuto: vado
infatti a perturbare la riflessione e la lettura sarà sbagliata. Generalmente si utilizzano
DVD double layer ( 2 strati sovrapposti di informazioni con letture diverse, raddoppiando
così la memoria ) double face, mentre inizialmente si utilizzavano DVD a singolo strato e
a singola faccia, i quali avevano 4,7 GB di memoria, a differenza di quelli utilizzati
adesso i quali, consentendo di scrivere informazioni diverse su 2 differenti facce, hanno
il doppio della memoria, 9,4 GB.

 MONITOR

Risoluzione grafica  Le immagini che vengono visualizzate sul monitor vengono


suddivise in una griglia di punti detti PIXEL, ciascuno dei quali rappresenta l’entità
minima di visualizzazione dell’immagine sullo schermo. Il numero di punti che
costituisce la griglia è detto risoluzione. Questa espressione sta ad indicare che
l’immagine è rappresentata da una griglia di X colonne e Y righe, per un totale di XxY
pixel. Maggiore è la risoluzione e minore è la dimensione dei singoli punti che
compongono un’immagine e quindi maggiore è il livello di dettaglio con cui si riesce a
rappresentare un’immagine.

Frequenza di refresh  L’immagine viene composta da sinistra verso destra partendo


dall’alto verso il basso, dal cannone a flusso di elettroni presente nel tubo catodico.
Questo movimento avviene decine di volta al secondo in modo che l’occhio umano
abbia la percezione di una immagine fissa. Il numero di volte che l’intero schermo viene
rigenerato è detto frequenza di refresh. È misurata in Hz e può variare da 60-120 HZ.
Per avere un’immagine priva di tremolii e sfarfallii il valore minimo accettabile e di 70
Hz (meglio 85-100 Hz)

RAPPRESENTAZIONE BINORIA DELL’INFORMAZIONE

Capire come codificare numeri attraverso una rappresentazione binaria, alla base di altre
codifiche. Se so identificare numeri allora potrò tradurre anche numeri che in realtà
rappresentano altro. Es. considero l’insieme delle lettere, ogni lettera è associata ad un
numero. Faccio rappresentazione binaria di un numero quindi implicitamente ho una
rappresentazione binaria alla lettera associata a quel numero. La rappresentazione numerica è
una rappresentazione intermedia per altre tipi di informazioni come caratteri, suoni e immagini.

CARATTERI E TESTI

Trovare modo per codificare (rappresentazione binaria) dei dati. Per scrivere un programma
che descriva un logaritmo è necessario rappresentare istruzioni e dati utilizzando un formato
che il calcolatore sia in grado di:
- memorizzare
- elaborare
- trasmettere

Passo attraverso la codifica dei dati e delle istruzioni

1. Alfabeto dei simboli  insieme di simboli ammissibili, come dei numeri interi o dei numeri
decimali con segno positivo e negativo. I simboli mi servono per costruire delle parole he
avranno una sintassi e una semantica.

2. Regole di composizione (sintassi) che definiscono le sequenze di cifre (parole) ammissibili 


mi fa capire quando una sequenza di cifre è corretta o no per la nostra codifica. Es. 1.234,5 è la
rappresentazione di un numero reale e non 1,234,5 perché non rispetta le regole di
composizioni sintattiche di un numero reale.

3. Codice (semantica)  insieme di regole che ad ogni configurazione ammissibile associa


un’entità di informazione. Da un significato ad una parola diventando un’informazione ad una
parola che è già stata classificato sintatticamente corretta. Lo stesso alfabeto può essere
utilizzato con codici diversi.

TIPOLOGIE DI CODIFICHE

- CODIFICA BINARIA

Il calcolatore utilizza un alfabeto binario, di solito si usano dispositivi elettronici digitali in grado
di assumere due solo stati come on/off, 1/0, V/F. Questo però non limita le funzionalità di un
calcolatore, posso perdere alcune informazioni nel passaggio al binario/digitale ma questo mi
permette comunque l’utilizzo del calcolatore. Il simbolo o cifra binaria si indica con BIT ed è la
più piccola quantità di informazione che posso memorizzare, si ottiene selezionando una
configurazione da un insieme che ne contiene due. Un bit di informazione è dato da 0 oppure 1.
Il calcolatore tratta diversi tipi di dati (numeri, caratteri, ...) tutti rappresentati con la codifica
binaria. Quindi il problema è assegnare un codice univoco a tutti gli oggetti compresi in un
insieme predefinito.

Quanti oggetti diversi posso codificare con parole binarie composte da k bit?

1BIT  21 = 2 stati (0,1) = 2 oggetti


2BIT  22 = 4 stati (11,10,01,00) = 4 oggetti
KBIT  2k stati = 2k oggetti
Se passassimo da una parola binaria di k bit ad una parola di k+1 bit si raddoppia il numero di
oggetti che si possono rappresentare (2k+1).

Quanti BIT mi servono per codificare N oggetti?

N <= 2k  k > 0 log2N  K = log2N


Per ipotesi pongo che le parole di un codice hanno tutte la stessa lunghezza

Per definire un codice devo identificare due insiemi, insieme delle configurazioni ammissibili e
insieme degli oggetti da rappresentare, e associare gli elementi dei due insiemi.
Es. Associare una codifica binaria ai giorni della settimana. Ho 7 oggetti diversi quindi K =
log27 = 3. L’insieme delle configurazioni ammissibili è dato da 2 3 stati. L’insieme degli oggetti
da codificare sono i 7 giorni della settimana. N(7) <= 2 K = 8, rispetto questa regola. Ora posso
associare ogni codice (tranne uno) ad un giorno della settimana.

-CODIFICA BINARIA DEI CARATTERI E DELLE STRINGHE (sequenze di caratteri)

Si cerca di rappresentare numericamente sequenze di caratteri come parole e frasi, si sfruttano


convenzioni che associano un valore numerico ad ogni carattere
Gli oggetti che sono da rappresentare sono:
- 26 lettere maiuscole
-26 lettere minuscole
-10 cifre
-circa 30 simboli d’interpretazione
-circa 30 caratteri si controllo
Quindi ho un totale di 120 oggetti complessivi  K = log2120 = 7, 7BIT = 27 =128 stati

Per convenzione si utilizzano due codici:

-Codice ASCII (American Standard Code for Information Interchange) utilizza 7 BIT, 7 BIT: 2 7 =
128 caratteri detti ASCII standard;
-Codice ASCII esteso utilizza 8 BIT (1 Byte) : 28 = 256 caratteri detti ASCII estesi. Comprende a
caratteri ASCII standard e alcuni caratteri semigrafici.
- Codice UNICODE utilizza 16 BIT (2 Byte) : 216 = 65 536 caratteri. Utile nel caso di alfabeti
particolarmente complessi come ad esempio quello cinese.
NUMERI

Informazione codificata, quindi elaborata e trasmessa all’interna dei sistemi di elaborazione


digitali. Rappresentano una informazione intermedia attraverso la quale altre tipologie di
informazioni sono codificate.

NUMERI NATURALI

Notazione posizionale  permette di rappresentare un qualsiasi numero naturale (intero non


negativo) nel seguente modo: CnCn-1...C2C1 =Cn xBn-1 +...+C2 xB1 +C1 xB0 la notazione decimale
tradizionale è di tipo posizionale (ovviamente con B = dieci).

“ventinove” in varie basi

B = otto A={0,1,2,3,4,5,6,7} 2910 = 358


B = cinque A={0,1,2,3,4} 2910 = 1045
B = tre A={0,1,2} 2910 = 10023
B = sedici A={0,1,...,8,9,A,B,C,D,E,F} 2910 = 1D16

Le codifiche più usate sono: esadecimale (sedici), ottale (otto), binaria (due).
La codifica binaria è alla base della codifica all’interna del calcolatore, usate per tutte le
informazioni.
B = due, A = (0,1), BIT è l’unità elementare di informazione.
La sequenza di bit bi (cifre binarie) bn bn−1 ... b1, avendosi bi ∈ {0, 1} rappresenta in base 2 il
valore:
n −1 n−2 0
bn×2 + bn−1×2 + ... + b1×2

Es. conversione binario  decimale

Dato il numero N espresso in base 2, basta riscriverlo secondo la notazione posizionale


utilizzando cifre e potenze della base 10
N= 1001012 (forma binaria)  N= 1 x 25 + 0 x 24 + 0 x 23 + 1 x 22 + 0 x 21 + 1 x 20 = 3710
(forma decimale)

Es. conversione decimale  binario

Si calcolano i resti della divisione per 2 finché il risultato di una divisione diventa zero:

23 : 2 = 11. resto R0 = b0 = 1
11 : 2 = 5 resto R1 = b1 = 1
5:2=2 resto R2 = b2 = 1
2:2=1 resto R3 = b3 = 0
1:2=0 resto R4 = b4 = 1

2310 = 101112

101112 = 1x24 + 0x23 + 1x22 +1x21 +1x20 = 2310

Con una sequenza di n bit si possono rappresentare 2n numeri interi assoluti da 0 a 2n-1. La
lunghezza delle sequenze di bit adottate stabilisce il massimo numero che può essere
rappresentato.
Con 1 Byte (cioè una sequenza di 8 bit):

00000000bin = 0dec
3
00001000bin = 1 × 2 = 8dec
5 3 1 0
00101011bin=1×2 +1×2 +1×2 +1×2 =43dec
n −1
11111111bin = Σn = 1,2,3,4,5,6,7,8 1 × 2 = 255dec

Aumento dei BIT  metto davanti in modo progressivo un bit 0 a sinistra, il valore del numero
non muta. Riduzione dei BIT  cancello davanti in modo progressivo un bit 0 a sinistra, il valore
del numero non muta, ma bisogna arrestarsi quando si trova un bit 1.

Codifica dei numeri naturali in modulo e segno

Il primo BIT a sinistra rappresenta il segno del numero (BIT di segno), i bit rimanenti
rappresentano il valore del modulo che vado a codificare in decimale. Se il primo BIT è 0, il
segno è positivo, se il primo BIT è 1, il segno è negativo. Quindi il BIT di segno è applicato al
numero rappresentato, ma non fa propriamente parte del numero (non ha significato
numerico).
Questa codifica non è realmente utilizzato perché non è efficacie, ho due diverse
interpretazione di 0 così che 000…0 = 100…0, non rispettando la proprietà di unicità.
All’interno del calcolatore viene utilizzata la codifica del Complemento a 2 (C 2).

COMPLEMENTO A 2

Il C2 è un sistema binario, ma il primo BIT (quello a sinistra) ha sempre peso negativo (chiamato
BIT di segno), tutti gli altri BIT hanno peso positivo. La sequenza di bit: bn bn−1 ... b1
n−1 n−2 0
rappresenta in C il valore: b ×(−2 )+ b ×2 + ... + b ×2
2 n n−1 1

Es. Numeri a 3 BIT in C2


2 1 0
000C2 = –0×2 + 0×2 + 0×2 = 0dec
2 1 0
001C2 = –0×2 + 0×2 + 1×2 = 1dec
2 1 0
010C2 = –0×2 + 1×2 + 0×2 = 2dec
2 1 0
011C2 = –0×2 + 1×2 + 1×2 = 2+1 = 3dec
2 1 0
100C2 = –1×2 + 0×2 + 0×2 = −4dec
2 1 0
101C2 = –1×2 + 0×2 + 1×2 = −4+1 = −3dec
2 1 0
110C2 = –1×2 + 1×2 + 0×2 = −4+2 = −2dec
2 1 0
111C2 = –1×2 + 1×2 + 1×2 = −4+2+1 = −1dec

Invertire un numero in C2  l’inverso additivo (o opposto) di un numero in C2 si ottiene


invertendo ogni BIT del numero e sommando 1 alla posizione meno significativa.
Es. 3 1 0
01011C2 = 1×2 +1×2 +1×2 = 8+2+1 = 11dec
4 2 0
10100 + 1 = 10101C2 = −1×2 +1×2 +1×2 = −16+4+1 = −11dec
Es. 11011C2 = -5dec
11011C2 = -1x24 + 1x23 + 0x22 + 1x21 + 1x20 = -5dec
00100 + 1 = 00101C2 = 1x22 + 1x20 = 5dec
Con due applicazioni dell’algoritmo si riottiene il numero iniziale -(-A) = A e che lo zero in C2 è
opposto di se stesso -0 = 0

Conversione da decimale a C2

Se D ≥ 0:
dec
-Converti Ddec in binario naturale
-Premetti il bit 0 alla sequenza di bit ottenuta

Es. 154dec ⇒ 10011010bin ⇒ 010011010C2

Se D < 0:
dec
-Trascura il segno e converti Ddec in binario naturale
-Premetti il bit 0 alla sequenza di bit ottenuta
-Calcola l’opposto del numero così ottenuto, secondo la procedura di inversione in C2

Es. −154dec ⇒ 154dec ⇒ 10011010bin ⇒ 010011010bin ⇒ 101100101 + 1 ⇒ 101100110C2

Osservazioni sul C2:

-Il segno è incorporato nel numero rappresentato in C2, non è semplicemente applicato (come
in modulo e segno)

-Il bit più significativo rivela il segno: 0 per numero positivo, 1 per numero negativo (il numero
zero è considerato positivo), ma...

-Se il numero è negativo, NON si può distaccare il bit più significativo e dire che i bit rimanenti
rappresentano il valore assoluto del numero

Intervalli di rappresentazione:
n
-Binario naturale a n ≥ 1 BIT → [0, 2 )
n−1 n−1
-Modulo e segno a n ≥ 2 BIT → (−2 ,2 )
n−1 n−1
-C2 a n ≥ 2 BIT → [−2 ,2 )

Lunghezza della rappresentazione:

-⎡log2 valore⎤= # di bit per rappresentare il valore (in binario naturale).


Es. ⎡log2 74dec⎤ = ⎡6,2...⎤ = 7 bit

-In generale: ⎡logB valore⎤= # di cifre per rappresentare il valore in base B.


Es. ⎡log10 74dec⎤ = ⎡1,8...⎤ = 2 cifre
NUMERI FRAZIONARI IN VIRGOLA FISSA

0,1011bin (in binario)


−1 −2 −3 −4
0,1011bin = 1×2 + 0×2 + 1×2 + 1×2 = 1/2 + 1/8 + 1/16 = = 0,5 + 0,125 +
0,0625 = 0,6875dec
Si può rappresentare un numero frazionario in virgola fissa (o fixed point) nel modo seguente:
19,6875dec = 10011,1011 virgola fissa poiché si ha:
19dec = 10011bin e 0,6875dec = 0,1011bin
proporzione fissa con 5 bit per la parte intera, 4 bit per quella frazionaria

La sequenza di bit rappresentante un numero frazionario consta di due parti di lunghezza


prefissata: il numero di bit a sinistra e a destra della virgola è stabilito a priori, anche se alcuni
bit restassero nulli
È un sistema di rappresentazione semplice, ma poco flessibile, e può condurre a sprechi di bit,
per rappresentare in virgola fissa numeri molto grandi (oppure molto precisi) occorrono molti
bit.

NUMERI FRAZIONARI IN VIRGOLA MOBILE

La rappresentazione in virgola mobile (o floating point) è usata spesso in base 10 (si chiama
allora notazione scientifica):
0,137x108notazione scientifica per intendere 13.700.000dec
La rappresentazione binaria si basa sulla relazione Rvirgolamobile = M x 2E con M la mantissa 137

SUONI

Il suono è un’informazione continua nello spazio e nel tempo tradotta in una rappresentazione
digitlae, discreta, attraverso rappresentazione binaria.

CODIFICA AUDIO

-discretizzazione del tempo:


campionamento → scelta di instanti in cui considerare il valore del segnale

-discretizzazione delle ampiezze:


quantizzazione → codifica dei campioni con un numero predefinito di BIT

Campionamento
Si misura l’ampiezza del segnale analogo a intervalli regolari, ogni T secondi detto periodo di
campionamento. La frequenza di campionamento F è data dall’inverso di T data in Hz.
Per segnali audio di tipo vocale la frequenza di campionamento è di 8 kHz. Maggiore è la
frequenza di campionamento maggiore sarà la quantità di instanti di tempo che devo andare a
considerare e quindi maggiore la quantità di dati che devo associare in quel segnale
digitalizzato.

Quantizzazione
I campioni estratti con la quantizzazione rappresentano le ampiezze con precisione arbitraria.
Per poter essere rappresentato da un calcolatore, il valore dell’ampiezza deve essere espresso
tramite un numero finito di BIT. La quantizzazione suddivide l’intervallo dei valori ammissibili in
2k BIT, dove k è il numero di BIT per campione. Più ho BIT maggiore è il numero delle differenti
configurazioni delle ampiezze che posso utilizzare quindi la dimensione di ogni singolo
intervallo sarà più piccola. Quando si approssima attraverso la quantizzazione si introduce un
errore chiamato errore di quantizzazione, che va a diminuire al crescere del numero dei BIT
così da avere un segnale più aderente rispetto al segnale audio originale. Da qua ho lo stesso
problema del campionamento, perché ho un grande numero di dati che si deve trasmettere
alla memoria.

Dopo avere discreto nel tempo e nello spazio un segnale, associo ad ogni campione una
particolare configurazione di BIT che mi permette di determinare un determinato segnale
audio.

L’accuratezza della ricostruzione dipende:


-da quanto sono piccoli gli intervalli di campionamento
-da quanti bit uso per descrivere il suono in ogni campione nella fase di quantizzazione
-maggiore accuratezza significa maggior quantità di memoria occupata

Anche per i suoni si possono utilizzare tecniche (lossless o lossy) di compressione per
migliorare l’occupazione di memoria della sequenza di campioni, minimizzando la quantità di
informazione che vado a perdere. Le tecniche più efficaci (lossy) sfruttano le “debolezze”
dell’orecchio umano. Es. MPEG-1/2 Layer 3, detto anche MP3, perdono informazione sulla fase
di compressione. Le tecniche lossless dopo la compressione posso riottenere il file originale
perché non c’è perdita di informazione, però meno efficienti in termini di compressione.

IMMAGINI

Il calcolatore non può direttamente rappresentare in memoria un’informazione continua. Le


immagini devono essere discretizzate, ovvero trasformate in un insieme di parti distinte, che
possono poi essere codificate separatamente sotto forma di numeri. Si hanno due tipi di
immagini: immagini scalari o raster (foto) e immagini vettoriali (disegno geometrico).

IMMAGINI RASTER

Per rendere discreta l’immagini sovrappongo una griglia ad essa, l’insieme di pixel influenzati
dalla presenza del disco diventa la mia nuova informazione. Quindi ora si hanno un insieme di
parti distinte.
La risoluzione dell’immagine è la dimensione della griglia utilizzata per discretizzare
l’immagine. Aumentando la risoluzione (ovvero il numero di pixel) e quindi diminuendo la
dimensione del singolo pixel, la rappresentazione approssima meglio l’immagine originaria. Se i
pixel diventano troppo grossi non ho una buona rappresentazione dell’immagine originale.
All’interno di ogni pixel ho una singola informazione.
Dopo aver discretizzato l’immagine occorre rappresentare ogni pixel con un numero. Tale
numero dovrà rappresentare il colore associato al pixel, usando un certo range: si parla di
quantizzazione. Nel caso di immagini in bianco e nero senza sfumature sono sufficienti due solo
bit per ogni pixel. Lo 0 rappresenta i pixel bianchi e 1 rappresenta i pixel neri.
Se si ha un immagine in bianco e nero con sfumature si usa la rappresentazione in toni di
grigio: un byte per pixel, con 256 gradazioni di grigio per ogni pixel, o più byte per pixel, per
avere più gradazioni possibili.
Per le immagini a colori si usa la rappresentazione del colore secondo il modello RGB (red,
green, blu): sintesi additiva dei tre colori primari red, green e blu ognuno con la propria
codifica. Si ha una combinazione additiva dei tre colori binari. Quindi un particolare colore
viene scomposti nei tre componenti principali, che vengono codificati e associati ad una
particolare tonalità di rosso, verde e blu. La profondità cromatica è il numero di BIT per ogni
pixel (di norma 24, ovvero un byte per ogni colore). Maggiore è la quantità di BIT maggiore è la
resa grafica.


La risoluzione e la profondità cromatica determinano la dimensione di memoria necessaria a
memorizzare l’immagine.
Es. 1024x768 pixel x 256 toni di grigio / pixel = 1024x768 pixel x 8 bit / pixel = 768 Kbyte
immagine grigia
024x768 pixel x 3 componenti / pixel x 256 toni / componente = 1024x768 pixel x 3
componenti / pixel x 8 bit / pixel = 2304 Kbyte immagine a colori

In fase di codifica esiste la necessità di adottare tecniche di compressione per ottimizzare


l’occupazione di spazio di memoria e la velocità di trasmissione attraverso la rete. Ci sono
tecniche di compressione senza perdita d’informazione (lossless), reversibili. Ah hoc per le
immagini è PNG sennò ci sono codifiche basate sulla frequenza dei dati, i dati più frequenti
vengono codificati con sequenze di BIT più brevi (ZIP).
Algoritmi con perdita di informazione (lossy). Generalmente sono specifici di un certo campo e
sfruttano le caratteristiche degli oggetti da rappresentare per buttare via informazioni poco
importanti. Nel caso di immagini gli algoritmi usati nei formati GIF e JPEG sfruttano la
caratteristica dell’occhio umano di essere poco sensibile a lievi cambiamenti di colore in punti
contigui, e quindi eliminano questi lievi cambiamenti “appiattendo” il colore dell’immagine.
Generalmente è possibile specificare quanto siamo disposti a perdere attraverso alcuni
parametri.

Principali formati di compressione:

-TIFF (Tagged Image File Format): uso di tag (etichette) descrittivi, 24 bit/pixel, compressione
senza perdita
-GIF (Graphics Interchange Format, Compuserve): più immagini nello stesso file, compressione
senza perdita
-PNG (Portable Network Graphics): compressione lossless, studiato per sostituire GIF (coperto
da brevetti). Supporta solo grayscale e RGB. Studiato per trasmissione di immagini su Web
-BMP (BitMaP, Microsoft e IBM):
1, 4, 8, 24 bit/pixel,
compressione senza perdita (RLE)
-JFIF (Jpeg File Interchange Format): compressione JPEG
(meglio noto come “formato JPEG”)

IMMAGINI VETTORIALI

Definiscono gli oggetti che compongono l’immagine mediante equazioni matematiche. Basate
su una rappresentazione geometrica delle immagini: usano relazioni matematiche tra punti e
linee per descrivere un’immagino. Non c’è perdita di dettaglio ingrandendo o rimpicciolendo
l’immagine. Sono già immagini digitali, create nel computer, quindi non hanno bisogno di
essere discretizzate. Non esiste il concetto di pixel e risoluzione. L’oggetto viene ricostruito
mediante le sue proprietà geometriche.
Le immagini vettoriali sono composti da oggetti. Tutti gli oggetti sono costruiti a partire da una
serie di primitive geometriche come punti, linee, rettangoli ed ellissi, tutte basate su equazioni
matematiche per rappresentare le immagini nel computer.

Vantaggi:
-Fatta di oggetti geometrici che formano gli oggetti: Line (x1,y1,x2,y2) Circle (x,y,radius)
-Può essere scalata a qualsiasi dimensione senza perdere qualità
-Indipendente dalla risoluzione
-Occupano pochissimo spazio in termini di memoria (dell’ordine dei kilobytes), non avendo
insieme di pixel

Svantaggi:
-Le immagini vettoriali sono per loro natura generate all’interno della macchina
-Non è il miglior formato per immagini di tipo fotografico con toni continui, luci, ombre, miscele
di colore.

La tecnica di rasterizzazione concerta immagina vettoriale in un’immagine scalare.


Sovrappongo una griglia all’immagine vettoriale adattandosi ai pixel.
AutoCad è un software Computer Aided Design (CAD) per la creazione di disegni
bi/tridimensionali in ambito ingegneristico, architettonico, meccanico, etc. L’immagine prodotta
è di tipo vettoriale (composta da entità grafiche definite come oggetti matematico/geometrici)
scalata a qualsiasi dimensione senza perdere qualità.

Esistono formati misti, sia vettoriali che scalari. Il testo è vettoriale, non perdono qualità, e
l’immagine è scalare. Classico formato di questo tipo è il PDF.

VIDEO

Il video è una successione di immagini fisse (frame) trasmesse con velocità sufficientemente
elevata. Il movimento è rappresentato già in modo discreto nei media: con un numero
abbastanza alto di fotogrammi fissi (15-30) l’occhio umano percepisce il movimento come un
continuo.

Due modi per codificare le sequenze di immagini: interlacciato e progressivo

Il video interlacciato è il segnale video di tipo televisivo utilizza un formato interlacciato. Prima
vengono generalmente le righe pari, poi quelle dispari così da generare 50 semiquadri al
secondo.
Nel formato progressivo ogni frame è costituito sia dalle righe pari che da quelle dispari.

CODIFICA VIDEO

Potrei in principio codificare separatamente ogni fotogramma come immagine fissa Tecnica
usata da molte fotocamere compatte, che salvano i filmati ripresi in formato Motion-JPEG. Così
si è in grado di ottenere rapporti di compressione dell’ordine 10-20 senza eccessiva perdita di
qualità.
Per ottenere rapporti di compressione più alti è necessario sfruttare la ridondanza temporale,
ovvero che frame consecutivi in una sequenza di immagini sono simili l’uno all’altro. Codifico
solo le differenze tra i frame successivi, senza un degrado eccessivo della qualità.

DENTRO AL CALCOLATORE

INFORMAZIONE E MEMORIA
Una parola di memoria è in grado di contenere una sequenza di n ≥ 1 bit. Di solito si ha: n = 8,
16, 32 o 64 bit. Una parola di memoria può dunque contenere gli elementi d’informazione
seguenti:
-un carattere (o anche più d’uno)
-un numero intero in binario naturale o in C2
-un numero frazionario in virgola mobile.
-alcuni bit della parola possono essere non usati
Lo stesso può dirsi dei registri della CPU

L’applicazione che sta usando la memoria che sa come leggere e come scrivere, non posso
distinguere, dare un semantica ad un gruppo di BIT semplicemente guardando la loro
sequenza.

ALGEBRA DI BOOLE

Codifica l’algebra della logica che si basa su operazioni logiche applicabili a operando logici,
cioè a operandi in grado di assumere solo i valori vero e falso. Quindi si rappresenta vero con il
BIT 1 e falso con il BIT 0.
Operatori logici binari  operazione OR, somma logica e operatore AND, prodotto logico.
Operatore logico unario  operatore NOT, inversione
Ci servono per andare a costruire con gli operandi delle combinazioni di operazione sempre più
compresse. L’operatore NOT precede l’operatore AND, che a sua volta precede l’operatore OR.
Gli operatori logici mi permettono di modellare alcune forme di ragionamento:
-A = è vero che 1 è maggiore di 2? (sì o no, qui è no) = 0
-B = è vero che 2 più 2 fa 4? (sì o no, qui è sì) = 1
-A and B = è vero che 1 sia maggiore di 2 e che 2 più 2 faccia 4? Si ha che A and B = 0 and 1 =
0, dunque no
-A or B = è vero che 1 sia maggiore di 2 o che 2 più 2 faccia 4? Si ha che A or B = 0 or 1 = 1,
dunque sì
OR, AND e NOT vengono anche chiamati connettivi logici, perché funzionano come le
congiunzioni coordinanti “o” ed “e”, e come la negazione “non”, del linguaggio naturale. Si
modellano ragionamenti (o deduzioni) basati solo sull’uso di “o”, “e” e “non”.