Aritmetica binaria
Definizioni
Codifica: rappresentazione degli elementi di un insieme (anche infinito) mediante un numero limitato di simboli (cifre, numeri, segni grafici,...) seguendo una opportuna regola.
Numeri a precisione finita: Il calcolatore, non disponendo di una quantità di memoria illimitata, ci costringe a trattare solo numeri rappresentati per mezzo di un numero limitato e costante di cifre, cioè numeri a precisione finita. Una proprietà importante dell’aritmetica sull’insieme degli interi è la chiusura rispetto alle operazioni di addizione, sottrazione e moltiplicazione. La violazione della chiusura può essere distinta in due classi disgiunte: le operazioni che danno un risultato più grande del massimo dell’insieme (overflow) o più piccolo del minimo dell’insieme (underflow), e le operazioni il cui risultato non appartiene all’insieme.
Sistemi di numerazione in base fissa
Un numero decimale consiste in una sequenza di cifre decimali più, eventualmente, una virgola decimale. La scelta di 10 come base per l’elevamento a potenza dipende dal fatto che stiamo usando i decimali, ovvero i numeri in base 10. Le basi più importanti sono 2, 8 e 16 e i sistemi di numerazione basati su di loro si chiamano rispettivamente binari, ottali ed esadecimali. Un sistema di numerazione in base k richiede k simboli diversi per rappresentare le cifre da 0 a k-1. Per esempio, i numeri decimali vanno da 0 a 9, quelli binari sono 0 e 1, quelli in base ottale da 0 a 7 mentre i numeri esadecimali richiedono 16 cifre, cioè sei nuovi simboli. Per convenzione, si usano le lettere maiuscole da A a F per le cifre che seguono 9 (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F).
L’entità minima di informazione all’interno di un elaboratore prende il nome di “bit” (binary digit - cifra binaria). Mediante un bit possiamo distinguere due informazioni. Tutte le informazioni, anche le più complesse, sono rappresentate mediante sequenze di due soli simboli (0 e 1), ossia in forma binaria (o digitale). Si ha perciò bisogno di associare biunivocamente ad ogni informazione “elementare” (caratteri, numeri, immagini) una sequenza binaria che la rappresenti. Con 1 bit si possono distinguere due diverse informazioni, per distinguere più informazioni bisogna usare sequenze di bit. Le diverse configurazioni di n bit permettono di individuare 2n informazioni diverse. Una sequenza di 8 bit viene chiamata “byte”.
Misure per capacità memorie
- 3 Byte
- 10 KB
- 20 MB
- 30 GB
- 40 TB
Numeri binari negativi
Modulo e segno: utilizza il bit più significativo come bit di segno (0 per il + e 1 per il -) e i restanti come modulo (valore assoluto) del numero. [-(2n-1-1), 2n-1-1]
Complemento a uno: prevede un bit di segno dove 0 indica i numeri positivi, 1 i negativi. La negazione di un numero si ottiene scambiando tutti i suoi 1 con 0 e viceversa, compreso il bit di segno. [-(2n-1-1), 2n-1-1]. Dato X, il complemento a 1 sarà il numero che sommato a X dà 2k-1.
Complemento a due: prevede un bit di segno, analogo al caso precedente. L’opposto di un numero si ottiene in due passi. Per prima cosa si rimpiazza ogni 1 con uno 0 e viceversa (complemento a uno) e poi si aggiunge 1 al risultato. Il risultato della somma binaria è lo stesso della somma decimale con la differenza che viene generato un resto se la somma è maggiore di 1, non di 0. L’eventuale resto in corrispondenza del bit più significativo viene ignorato. [-2n-1, 2n-1-1]. Dato X, il complemento a 2 sarà il numero che sommato dà 2k.
Notazione in eccesso di 2m-1: rappresenta il numero memorizzando la sua somma con 2m-1 (esempio: su 8 bit -3 diventa -3+128=125). [2n-1]
Aritmetica binaria
La somma di due addendi binari inizia dal bit meno significativo e procede sommando i bit che si trovano nella posizione corrispondente. Se c’è un riporto, lo si somma nella colonna successiva a sinistra. Nell’aritmetica in complemento a uno, l’eventuale riporto generato dalla somma dei bit più significativi viene sommato al bit meno significativo. Questo procedimento si chiama end-around carry. Nell’aritmetica in complemento a due l’eventuale riporto viene semplicemente scartato. Se gli addendi hanno segno opposto non si può verificare overflow. Se invece hanno lo stesso segno e il risultato ha segno opposto si è verificato un overflow e il risultato della somma è sbagliato. In entrambi i sistemi in complemento, si ha overflow se e soltanto se il resto in corrispondenza del bit di segno differisce dal riporto generato oltre il bit di segno. Molti calcolatori conservano questo bit in un apposito bit di overflow, ma il riporto del bit di segno non è desumibile dal risultato.
| 0+0=0 | 0-0=0 |
| 1+0=1 | 1-0=1 |
| 0+1=1 | 1-1=0 |
| 1+1=0 con riporto di 1 | 0-1=1 con prestito di 1 |
Moltiplicare un numero binario positivo per X=2m corrisponde a spostare verso sinistra di m posizioni le cifre corrispondenti alla sua rappresentazione aggiungendo zeri nelle m posizioni meno significative. Dividere un numero binario positivo per X=2m (o moltiplicare per 2-m) corrisponde a spostare verso destra di m posizioni le cifre corrispondenti alla sua rappresentazione aggiungendo zeri nelle m posizioni più significative. Non valgono la proprietà associativa e quella distributiva.
Numeri in virgola mobile
Principi dell’aritmetica in virgola mobile
Un modo per disaccoppiare l’intervallo dalla precisione consiste nell’esprimere i numeri nella notazione scientifica dove f è chiamata frazione, o mantissa, ed e è un intero positivo o negativo chiamato esponente. La versione per il calcolatore di questa notazione è chiamata rappresentazione in virgola mobile. L’intervallo è determinato dal numero di cifre che compongono l’esponente, mentre la precisione è determinata dal numero di cifre della frazione. L’espressione informatica di questa notazione è la rappresentazione in virgola mobile o floating point. Esistono vari tipi di rappresentazione per esempio imponendo che la prima cifra significativa della mantissa si trovi immediatamente a destra della virgola; queste forme si dicono rappresentazioni normalizzate. Pensando ad una utilizzazione per il calcolatore si possono stabilire ulteriori convenzioni:
- Fissare la lunghezza della mantissa ad un valore costante;
- Limitare l’esponente ad opportuni intervalli;
- Utilizzare un esponente convenzionale che lo renda sempre positivo (notazione in eccesso);
- Disporre i tre elementi: <segno, esponente, mantissa> in un ordine stabilito;
Standard in virgola mobile IEEE 754
Fino al 1980 ogni produttore di calcolatori aveva il proprio formato di aritmetica in virgola mobile. Alla fine degli anni ’70 venne costituito un comitato per standardizzare l’aritmetica in virgola mobile. Il risultato del lavoro fu lo standard IEEE 754. Questo standard definisce tre formati: precisione singola (32 bit), precisione doppia (64 bit) e precisione estesa (80 bit). I primi due formati usano la base 2 per le frazioni e la notazione in eccesso per gli esponenti. Entrambi iniziano con un bit che rappresenta il segno dell’intero numero, 0 se è positivo e 1 se è negativo. Di seguito vi è l’esponente, che utilizza la notazione in eccesso 127 per la precisione singola e la notazione in eccesso 1023 per la precisione doppia. Una frazione normalizzata inizia con una virgola, seguita da un bit 1 e poi dal resto della frazione. Questo bit è considerato nascosto perché vi è sempre. I numeri denormalizzati sono numeri che hanno esponente 0 e come frazione i successivi 23, o 52, bit. Pertanto il bit 1 implicito alla sinistra della virgola binaria diventa ora 0. È possibile distinguere i numeri normalizzati da quelli denormalizzati, dati che i secondi non possono avere un valore 0 come esponente.
Codifica dei caratteri
ASCII
Un codice ampiamente usato è chiamato ASCII. I caratteri sono definiti da 7 bit, permettendo così un totale di 128 caratteri distinti. (il formato standard ha in totale 8 bit: 7 bit + 1 bit iniziale che è sempre 0)
UNICODE
L’idea di base di UNICODE consiste nell’assegnare a ogni carattere un valore a 16 bit, chiamato code point; non esistono quindi caratteri o sequenze speciali composte da più byte. (65536 possibili caratteri). Per i valori che hanno già una codifica in ASCII i bit rimangono uguali e vengono posti nelle posizioni meno significative mentre a sinistra si pongono gli 8 bit rimanenti che hanno valore 0.
UTF-8
Codifica di lunghezza variabile da 1 a più byte.
Codifica delle immagini
Le immagini digitali vengono suddivise in piccoli quadratini chiamati “pixel”. La rappresentazione sarà più fedele all’aumentare del numero di pixel, ossia al diminuire delle dimensioni dei quadratini della griglia in cui è suddivisa l’immagine “risoluzione dell’immagine”. Assegnando un bit (0 o 1) ad ogni pixel è possibile codificare solo immagini senza livelli di chiaroscuro. Le immagini in bianco e nero hanno delle sfumature (diversi livelli di intensità di grigio). Per codificare le immagini con diversi livelli di grigio si stabilisce per ogni pixel il livello medio di grigio cui viene assegnata convenzionalmente una rappresentazione binaria. Ad esempio, se utilizzo quattro bit possiamo rappresentare 24=16 livelli di grigio.
La rappresentazione di un’immagine mediante la codifica dei pixel viene chiamata codifica bitmap e l’immagine viene detta “discretizzata”.
- 1 pixel a 2 colori 1 bit
- 1 pixel a 256 colori (28) 1 byte – 8 bit
- 1 pixel a 65535 colori (216) 2 byte – 16 bit
- 1 pixel a 16 milioni di colori 3 byte
La rappresentazione di un’immagine mediante la sua bitmap richiede una notevole quantità di spazio. Lo spazio occupato da un’immagine dipende dalla sua risoluzione (numero di pixel) e dal numero delle sfumature di grigio o dal numero dei colori. Per calcolare il numero di byte necessari a memorizzare un’immagine mediante la codifica bitmap occorre calcolare il numero totale di pixel, moltiplicare il numero totale di pixel per il numero di bit necessari a rappresentare il colore e trasformare il numero ottenuto in byte, se richiesto.
Particolarmente note sono le codifiche RGB e CMY, in cui i diversi colori sono ottenuti come combinazioni di un insieme di colori base. Lo standard RGB usa i colori rosso, verde e blu ed è impiegato nel campo delle riprese video, mentre lo standard CMY usa i colori ciano, magenta e giallo e viene utilizzato in ambito fotografico. Nella codifica RGB si associa un byte (8 bit) per ciascuno dei tre colori fondamentali. La rappresentazione binaria dà l’intensità dei tre colori di base, l’intensità minore è 0000 0000 (nero) mentre l’intensità maggiore è 1111 1111 (bianco). Le immagini in movimento vengono memorizzate come sequenza di fotogrammi. Le immagini televisive vengono trasmesse con una frequenza di 25/30 fotogrammi al secondo, risoluzione di 576x720 e colori codificati con 16 bit.
Codifica dei suoni
Anche i suoni vengono rappresentati in forma digitale. Dal punto di vista fisico un suono è un’alterazione della pressione dell’aria che, quando rilevata dall’orecchio umano, viene trasmessa in un particolare stimolo al cervello. La durata, l’intensità e la variazione nel tempo della pressione dell’aria sono le quantità fisiche che rendono un suono unico. L’intensità di un suono descrive l’ampiezza delle variazioni dell’onda sonora e fornisce una misura dell’energia trasportata dall’onda sonora. L’intensità si misura in decibel (dB). L’altezza di un suono è il parametro legato alla sensazione di gravità/acutezza che si percepisce di un suono. Dipende dalle frequenze di variazione delle onde elementari che compongono l’onda sonora. Le frequenze si misurano in Hertz (Hz). Un suono può essere descritto mediante l’onda di pressione che descrive la variazione della pressione dell’aria nel tempo.
La conversione di un segnale continuo in una successione di numeri viene eseguita con due successive operazioni elementari:
- Campionamento del segnale, cioè si preleva una successione di campionamenti a intervalli costanti di tempo.
- Ogni campione viene quantizzato ossia convertito in un numero, si codificano in forma digitale le informazioni estratte dai campionamenti. Quanto più frequentemente il valore di intensità dell’onda viene campionato, tanto più precisa sarà la sua rappresentazione.
Il segnale può essere riprodotto perfettamente sulla base dei valori campione se la frequenza di campionamento è superiore al doppio della componente del segnale di frequenza più elevata. Un errore viene comunque introdotto quando si converte il valore analogico di un campione in un numero con un numero limitato di cifre. Per ogni campione di suono si usano 8 bit, se si utilizzano due registratori (due entrate) si usano 16 bit per ogni campione.
Livello logico digitale
Porte logiche
Un circuito digitale è un circuito in cui sono presenti solo due valori logici. Generalmente, un valore (per esempio 0) è rappresentato da un segnale compreso tra 0 e 1 volt, mentre l’altro valore (per esempio 1) è rappresentato da un segnale compreso tra 2 e 5 volt. Un circuito digitale trasforma segnali (binari) di ingresso in segnali di uscita. I circuiti sono detti combinatori quando l’uscita è funzione esclusiva dell’ingresso; sono detti sequenziali quando l’uscita è funzione oltre che dell’ingresso anche dello stato. La base hardware di tutti i calcolatori digitali è costituita da alcuni piccoli dispositivi elettronici, chiamati porte logiche, ciascuna delle quali calcola una diversa funzione di questi segnali. Questi dispositivi si basano sul fatto che si può far funzionare un transistor come un interruttore binario molto veloce. I transistor hanno tre connessioni verso il mondo esterno: il collettore, la base e l’emettitore. Quando la tensione in ingresso scende sotto un valore critico, chiamato V, il transistor viene disabilitato e si comporta come una resistenza infinita. La conseguenza è che l’output del circuito, Vout, assume un valore vicino a V, una tensione regolata esternamente che, per questo tipo di circuiti, è essenziale.
-
architettura
-
architettura degli elaboratori
-
Architettura degli elaboratori
-
Architettura degli elaboratori