Rappresentazione dell'informazione Flashcards
Perchè rappresentare?
In un computer occorre rappresentare tutti i dati, siano essi numeri, caratteri, immagini, suoni sotto forma di numeri, in particolare facendo uso soltanto delle cifre 0 e 1.
Sistemi di numerazione
Un sistema di numerazione può essere visto come un insieme di simboli (cifre) e regole che assegnano ad ogni sequenza di cifre un unico valore numerico. I sistemi di numerazioni vengono di solito classificati in sistemi posizionali e non posizionali.
Sistemi di numerazione posizionali
Nei sistemi posizionali ogni cifra della sequenza ha un’importanza che varia a seconda della relativa posizione. Posizionale quindi significa che il valore delle cifre contenute in un numero è diverso a seconda della posizione che esse occupano. Ad esempio, nel sistema decimale la prima cifra a destra indica l’unità, la seconda le decine, la terza le centinaia, la quarta le migliaia,
Sistemi di numerazione non posizionali
Nei sistemi non posizionali ogni cifra esprime una quantità che non dipende dalla posizione. Il sistema di numerazione romano non è posizionale: il simbolo “L” esprime il numero 50, indipendentemente dalla posizione.
Sistema di numerazione posizionale: cifre, base, peso
I costituenti di un numero sono detti cifre (decimali, binarie, in base otto, esadecimali) e sono disposti da destra a sinistra per valore crescente. Per tale ragione la prima cifra a sinistra è detta cifra più significativa, mentre l’ultima a destra è detta cifra meno significativa. A ciascuna cifra ` e assegnato un valore che dipende, oltre che dalla posizione, anche dalla base utilizzata dal sistema di numerazione considerato. La base di un sistema di numerazione posizionale corrisponde al numero di simboli usati per scrivere i numeri ed indica quante unità di un certo ordine sono necessarie per formare un’unità di ordine immediatamente superiore. Il peso associato alla posizione j-esima è dato da b j , dove b è la base. Se b è la base di un sistema di numerazione, il sistema posizionale ad esso associato utilizza un numero di cifre uguali alla base, ossia avrà b cifre. Uno stesso numero pu o essere rappresentato in molti modi diversi. Nota la base,
e possibile conoscere quanti simboli si possono utilizzare (cifre) per scrivere un numero con la base scelta ed il peso associato ad ogni posizione.
Conversione da base b a base 10
Ogni numero intero senza segno in base b con n cifre si esprime come la somma dei prodotti di ciascuna cifra in posizione j-esima per il peso b j associato a tale posizione. L’espressione restituisce il numero intero senza segno rappresentato in base dieci. Un vettore di n cifre in base b consente di rappresentare i numeri decimali appartenenti all’intervallo [0, b^n − 1].
Conversione da base 10 a base b (numeri INTERI)
Per effettuare la conversione di un numero intero senza segno da sistema decimale ad un qualunque sistema in base b occorre dividere il numero per la base b finché il quoziente non diventi zero. I resti di tali divisioni, scritti in ordine inverso, rappresentano le cifre del numero in base b; tali resti avranno valori compresi tra 0 e b−1.
Algoritmo per conversione da base 10 a base b (numeri INTERI)
STEP 1:Dividere la parte intera del numero decimale per la base b e memorizzare il resto della divisione;
STEP 2:se il quoziente è maggiore di zero, usare il quoziente al posto del numero di partenza e continuare dallo STEP 1;
STEP 3:se il quoziente `e zero, la rappresentazione in base b del numero decimale di partenza consiste in una sequenza contenente i resti elencati in ordine inverso rispetto all’ordine con cui sono stati memorizzati.
Tale algoritmo consente di convertire un numero intero in base 10 in una qualunque base b. Nel caso b= 2 si ottiene la conversione in binario del numero decimale assegnato. Per una verifica di correttezza basta riconvertire il risultato nella base 10.
Esempi di sistemi di numerazione posizionale
- sistema decimale: il sistema decimale è un sistema di numerazione posizionale basato su 10 simboli diversi 0,1,2,3,4,5,6,7,8,9, chiamati cifre.
- sistema binario: Il sistema di numerazione binario ` e un sistema di numerazione posizionale basato su 2 simboli diversi 0,1, denominati bit (binary digit). Il valore di ogni singola cifra all’interno di un numero è dato da una potenza della base (2). L’elevata lunghezza che assumono i numeri in binario (ad esempio, la sola cifra 9 in decimale necessita di quattro posizioni in binario, ossia 1001) comporta un’elevata possibilità di errore nel manipolarli e nell’interpretarli. Per ovviare a questo problema esistono i sistemi di numerazione ottale e esadecimale, che presentano il vantaggio di essere più compatti rispetto al sistema di numerazione binario e immediatamente convertibili in esso.
- sistema ottale: La numerazione in base otto è usata dai programmatori per rappresentare i numeri binari in forma compatta (numero 8 ` e una potenza di 2, ossia 8 = 2 3 ). Tale sistema di numerazione fa uso di otto cifre: 0,1,2,3,4,5,6,7.
- sistema esadecimale: La parola esadecimale deriva dal termine greco hexadeca, che vuol dire sedici (hex = 6 e deca = 10). Il sistema esadecimale, quindi, si basa sul numero sedici, che ` e una potenza di due, 16 = 2 4 , e pertanto anch’esso viene utilizzato per rappresentare in forma compatta i numeri binari. Il sistema di numerazione esadecimale fa uso di sedici cifre: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Occorre osservare che le lettere A, B, C, D, E, F servono per abbreviare la scrittura dei numeri 10,11,12,13,14, 15, rispettivamente. 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 .
Conversione da base 10 a base b (numeri NON INTERI)
Per effettuare la conversione della parte frazionaria di un numero senza segno da sistema decimale ad un qualunque sistema in base b, invece, si deve moltiplicare (non dividere) per la base e conservare la parte intera. La nuova parte frazionaria viene moltiplicata per la base conservando sempre la parte intera. Si ripete tale operazione per un numero adeguato di volte e poi le cifre memorizzate dalla prima all’ultima saranno le nuove cifre frazionarie.
In generale, per un numero frazionario decimale si convertono separatamente la parte intera e la parte frazionaria seguendo le procedure precedentemente esaminate.
Algoritmo per conversione da base 10 a base b (numeri NON INTERI)
STEP 1: Moltiplicare la parte frazionaria del numero decimale d per la base b e memorizzare la parte intera del prodotto;
STEP 2: Se la nuova parte frazionaria del prodotto è diversa da zero oppure se non sono state determinate le cifre in base b necessarie per raggiungere la precisione desiderata, usare tale risultato al posto della parte frazionaria del numero d di partenza e continuare dallo STEP 1;
STEP 3: se la nuova parte frazionaria verifica una delle condizioni di terminazione, ossia se la nuova parte frazionaria del prodotto è zero oppure si è raggiunta la precisione desiderata, scrivere tutte le cifre ottenute come parte intera nell’ordine in cui sono state calcolate.
L’algoritmo consente di convertire la parte frazionario di un numero in base dieci in una qualunque base b.
Conversione dalla base 8 alla base 2
La conversione di un numero dal sistema ottale al sistema binario può essere ottenuta effettuando la conversione del numero da ottale a decimale e successivamente da decimale a binario. Essendo 8 = 2^3 , un metodo più semplice per convertire un numero dal sistema ottale al sistema binario e viceversa, consiste nell’effettuare raggruppamenti di tre cifre e ogni cifra ottale deve essere sostituita dalla sua rappresentazione binaria utilizzando tre bit.
Conversione dalla base 16 alla base 2
La conversione di un numero dal sistema esadecimale al sistema binario può essere ottenuta effettuando la conversione del numero da esadecimale a decimale e successivamente da decimale a binario. Essendo 16 = 2^4 , un metodo più semplice per convertire un numero dal sistema esadecimale al sistema binario e viceversa, consiste nell’effettuare raggruppamenti di quattro cifre e ogni cifra esadecimale deve essere sostituita dalla sua rappresentazione binaria utilizzando quattro bit.
Operazioni sui numeri binari
Dato che il sistema di numerazione binario è posizionale, è evidente che le leggi che regolano tali operazioni sono identiche a quelle dell’aritmetica dei numeri decimali, tenendo presente la base del sistema di rappresentazione e il numero di bit che si desidera utilizzare.
Addizione in binario
Per effettuare la somma di due numeri binari occorre incolonnarli partendo dalla cifra meno significativa (la prima cifra a destra). Una volta incolonnati si esegue la somma dei due numeri sommando ciascuna colonna una alla volta da destra a sinistra, usando le regole di addizione binaria illustrate nella Tabella di addizione.
Sottrazione in binario
Consultare tavola della sottrazione o trasformare in decimale
Moltiplicazione in binario
Tabella delle moltiplicazioni
Divisione in binario
La divisione tra numeri interi sarà espressa tramite il quoziente e il resto. Il resto è zero solo nel caso in cui il dividendo è un multiplo del divisore. Nel caso del sistema di numerazione binario il resto può essere soltanto 0 oppure 1.
Complemento a due
Il complemento a due, meglio conosciuto in inglese two’s complement, rappresenta il metodo più diffuso ed utilizzato per eseguire la rappresentazione di un numero intero con segno di informatica.
La rappresentazione degli interi a complemento a due è la più utilizzata in informatica poichè gode delle seguenti proprietà:
- è possibile utilizzare le regole dell’aritmetica senza segno;
- esiste un’unica rappresentazione dello zero;
- la convenzione sul bit del segno è rispettata;
- non è necessario un circuito specifico per trattare le sottrazioni.
Complemento alla base b
Il complemento alla base b di un numero intero x, espresso con n cifre nella base b, si definisce come: Cb(x) = b^n −x. Il complemento alla base b di un numero intero x, espresso con n cifre nella base b, si può anche ottenere calcolando il complemento a b−1 di ogni singola cifra e aggiungendo 1 al risultato.
Numeri interi con segno
Supponiamo di avere a disposizione n bit. Un vettore di n cifre in base b = 2 consente di rappresentare numeri decimali senza segno appartenenti all’intervallo [0,2^n −1], per un totale di 2 n valori diversi. Se invece vogliamo rappresentare anche numeri negativi, allora le configurazioni che hanno il bit più significativo uguale a zero, ossia i numeri relativi appartenenti all’intervallo [0,2^(n−1) −1], rappresentano se stessi, mentre le configurazioni con il bit più significativo uguale a uno, ossia i numeri relativi appartenenti all’intervallo [−2^(n−1) ,−1], rappresentano i numeri negativi. Pertanto, con il metodo del complemento a due, un numero binario di n cifre può rappresentare tutti i numeri relativi appartenenti all’intervallo [−2^(n−1) ,2^(n−1) − 1], con 2 n−1 valori positivi e altrettanti negativi: per un totale di 2 n valori diversi.