Rappresentazione e Codifica dell Informazione Capitolo 1 Chianese, Moscato, Picariello, Alla scoperta dei fondamenti dell informatica un viaggio nel mondo dei BIT, Liguori editore.
Sistema di numerazione posizionale Espressione di un numero intero N secondo il sistema di numerazione posizionale utilizzando l=i simboli (c_(i-1),, c_0): N=c i - 1 b i - 1 + c i - 2 b i - 2 + + c 2 b 2 + c 1 b 1 + c 0 b 0 Esempio: (47) 10 = 4 10 1 + 7 10 0 In caso di numeri con parte frazionaria, compaiono le potenze negative della base: N= c i - 1 b i - 1 + c i - 2 b i - 2 + + c 2 b 2 + c 1 b 1 + c 0 b 0 + c -1 b -1 + c -2 b -2 +... NB: in questo caso sono usate i cifre per la parte intera ed un numero imprecisato di cifre per la parte frazionaria (c_(-1), c_(-2),.)
Rappresentazioni in basi diverse Esempio: rappresentazioni del numero 47 Base 2: 101111 Verifica: (101111) 2 = 1 2 5 + 0 2 4 + 1 2 3 + 1 2 2 + 1 2 1 + 1 2 0 = 32 + 8 + 4 + 2 +1 = 47 Base 5: 142 Verifica: (142) 5 = 1 5 2 + 4 5 1 + 2 5 0 = 25 +20 +2 = 47 NOTE: L'impiego nella base 2 di un minor numero simboli rispetto al sistema decimale (2 contro 10) implica che lo stesso numero abbia una parolacodice più lunga in notazione binaria che non in quella decimale Nel passaggio da una base all altra alcune proprietà dei numeri si perdono. ad esempio un risultato di una divisione può essere periodico nella base dieci ma non è detto che lo sia in un altra base, così come la proprietà di un numero di essere divisibile per cinque ha senso solo se la base è maggiore di cinque.
Sistema Binario Base 2 consente di rappresentare numeri mediante la combinazione di due soli simboli {0, 1} ovvero di codificare i numeri in bit importanza capitale in informatica
Sistema binario In un byte, il bit più a destra è quello meno significativo (posizione o peso 0, detto anche LSB da Least Significant Bit) mentre quello più a sinistra è quello più significativo (posizione o peso 7, detto anche MSB da Most Significant Bit) Poiché un byte può rappresentare 2 8 valori diversi, si possono, ad esempio con 8 bit gestire i seguenti intervalli di numeri interi: {0,, 255} {-127,, 128} entrambi costituiti da 256 numeri.
Ottale ed Esadecimale Per rappresentare una cifra decimale ci vogliono l=log 2 10 bit ( 3,3 bit) La stringa di cifre in bit è approssimativamente tre volte più lunga di quella decimale Esempio: (1001101) 2 = =1 2 6 + 0 2 5 + 0 2 4 + 1 2 3 + 1 2 2 + 0 2 1 + 1 2 0 = 64 + 0 + 0 + 8 + 4 + 0 + 1 = (77) 1 Per evitare di dover trattare con stringhe di bit troppo lunghe, sono molto usati il sistema ottale ed esadecimale. Una cifra ottale si rappresenta su 3 bit Una cifra esadecimale si rappresenta su 4 bit
Relazione tra numeri in basi potenze di due La trasformazione di un valore da binario in ottale è molto semplice Una cifra del sistema ottale è rappresentabile esattamente con tre bit del sistema binario, il cui valore rappresentato è uguale proprio alla cifra cosiderata Da ottale a binario: ogni cifra ottale viene esplosa esattamente nelle tre cifre binarie che la rappresentano. Da binario ad ottale: La conversione avviene raggruppando le cifre binarie in gruppi di tre a partire dalla posizione di peso minore e calcolandone quindi il valore La rappresentazione esadecimale è ancora più compatta! il processo di conversione da esadecimale a binario è equivalente a quello da ottale a esadecimale Nel processo di conversione da binario ad esadecimale le cifre binarie devono essere raggruppate in gruppi di quattro.
Conversione decimale - binario Dato un numero decimale d, cerchiamo le cifre c tali che: d pi = c i-1 2 i-1 + + c 2 2 2 + c 1 2 1 + c 0 2 0 d pf = c -1 2-1 + c -2 2-2 + con: d = d pi + d pf Si procede convertendo prima la parte intera e poi la parte frazionaria Parte intera: algoritmo della divisione Parte frazionaria: algoritmo della moltiplicazione Il risultato è dato da: <conversione_pi>,<conversione_pf>
Conversione parte intera (numeri interi)
Conversione parte frazionaria Nel caso in cui l algoritmo termini perché la nuova parte frazionaria è già stata esaminata durante le moltiplicazioni successive, il risultato ottenuto e periodico nelle cifre ottenute tra la prima occorrenza e la seconda occorrenza della parte frazionaria considerata
Operazioni sui binari si definiscono la tavola dell addizione e la tabellina del prodotto per le cifre binarie.
Esempi
Rappresentazione dei numeri nel calcolatore Numeri relativi (interi positivi e negativi, zero incluso) Numeri reali Gestione dei numeri con precisione finita cioè rappresentati con un numero finito di cifre Problemi derivanti dall adozione di codici binari a lunghezza finita per la rappresentazione dei numeri
Rappresentazione dei numeri negativi: rappresentazione in segno e modulo Segno e Modulo Poiché il segno assume due soli valori ( + oppure ), allora lo si può codificare con un singolo bit 0 per indicare + 1 per indicare - Nella rappresentazione in segno e modulo con l bit: Il bit più a sinistra (MSB) rappresenta il segno I restanti (l 1) rappresentano il valore assoluto del numero
Rappresentazione in segno e modulo con l bit Consente di codificare tutti i numeri relativi appartenenti all intervallo: [-2 l - 1 + 1, 2 l - 1-1] Cioè 2 l - 1 valori positivi e altrettanti negativi (intervallo simmetrico) Esempio l =8 [-127,127] Problemi del segno e modulo: Sono presenti due rappresentazioni dello zero: lo 0 positivo (00000000) lo 0 negativo (10000000), Le operazioni di somma e sottrazione devono essere corrette nell attraversamento dello zero. Richiede un algoritmo complesso per effettuare somma e sottrazione in presenza delle diverse combinazioni dei segni degli operandi.
Rappresentazione in segno e modulo Diversamente dalla rappresentazione dei numeri naturali, con la rappresentazione in segno e modulo non è possibile lavorare direttamente sulle rappresentazioni dei numeri per realizzare le operazioni aritmetiche È necessario, invece, lavorare separatamente sul segno e sul modulo. Quando, ad esempio, si sommano due numeri di segno discorde, bisogna determinare quello con modulo maggiore e sottrarre ad esso il modulo dell altro. Il segno del risultato sarà quello dell addendo maggiore in modulo. Tale caratteristica, insieme con il problema della doppia rappresentazione dello zero, rende i calcoli particolarmente laboriosi e, per questo motivo, non è molto utilizzata nella pratica.
Rappresentazione in complementi a due La rappresentazione in complementi a due su l bit consente la rappresentazione dell intervallo di numeri relativi: [-2 l 1, 2 l 1-1] Esempio: l = 8 [-128, 127] Regola di codifica: I numeri non negativi dell intervallo (cioè quelli nel sottointervallo [0, 2 l 1-1]) sono rappresentati con la loro codifica in binario I numeri negativi dell intervallo (cioè quelli nel sottointervallo [-2 l 1, -1]) sono rappresentati con la codifica in binario del corrispettivo complemento a due Il complemento a due (x ) di un numero negativo x su l bit si ottiene sommando al numero negativo il numero 2 l x = x + 2 l
Calcolare il complemento a 2 Definizione preliminare: Complemento alla base b di una cifra c: c = b -1 c Esempio complemento alla base 2 della cifra 1 = 2-1-1 = 0 Complemento alla base 2 della cifra 0 = 2-1-0 = 1 il complemento a 2 di x si ottiene Calcolando i complementi alla base di tutte le cifre del valore assoluto del numero x Sommando 1 al valore così ottenuto Per risalire al modulo del numero negativo che viene rappresentato col complemento a 2, si possono seguire gli stessi passaggi! Si complementa alla base il codice Si somma 1 al valore così ottenuto
Calcolare il complemento a 2