Comments
Transcript
Sistemi di numerazione e codifica dell`informazione
Sistemi di Numerazione – Tutti i sistemi di numerazione sono fondati sullo stesso principio: • la “base” (b) è un numero intero maggiore di 1; • la base corrisponde al numero di diversi simboli che si adoperano; • il numero è costituito da una sequenza di simboli (cifre); la posizione della cifra rappresenta la potenza della base (a partire da 0, da destra verso sinistra); • il simbolo della cifra rappresenta il fattore che moltiplica la potenza della base; • il valore del numero è costituito dalla somma dei vari termini; – Ad esempio, nel sistema decimale, 123 significa: 1*10^2 + 2*10^1 + 3*10^0 – Nel sistema decimale la base è 10, e quindi vi sono 10 simboli, ovvero le cifre da 0 a 9. – Il sistema decimale si è imposto per il fatto che si impara a contare con le dita, e l’uomo ha dieci dita. 1 Sistema Binario – Il sistema binario è un sistema di numerazione a base 2; vi sono quindi solo due simboli: 0 e 1; – Il sistema binario è il più semplice possibile – Il sistema binario si presta particolarmente al calcolo automatico, in quanto: • il dispositivo di calcolo, al livello più elementare, deve tenere conto di 2 soli “stati” o possibilità (On/Off, Aperto/Chiuso), riducendo le possibilità di errore • Qualsiasi altro sistema dovrebbe distinguere tra diversi “livelli”. – I numeri rappresentati in forma binaria sono ovviamente più lunghi (da 3 a 4 volte) di quelli rappresentati in forma decimale: • ciò che si guadagna in semplicità ed efficienza lo si perde in compattezza; • nel campo dell’automazione questo scambio è quasi sempre vantaggioso. 2 Sistema binario: esempi • Esempio dei primi numeri in forma binaria: 0 1 2 3 4 5 6 7 8 9 10 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 • Esempio di decodifica di un numero binario: – Da binario a decimale: • 1011011: sono 7 cifre; • si parte (da sinistra) con la potenza 6: • 1*2^6 + 0*2^5 + 1*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 64 + 16 + 8 + 2 + 1 = 91 3 Il sistema ottale ed esadecimale – I numeri binari non sono pratici per l’uso umano: sono difficili da leggere e troppo lunghi. • Ma in certi casi è necessario capire cosa avviene esattamente dentro un computer, e quindi si devono trattare dei numeri binari. • Per migliorare la leggibilità, si raggruppano i numeri binari a gruppi di 3 o 4 cifre binarie (sempre a partire da destra). • Ad un gruppo di 3 cifre corrispondono 2^3 = 8 combinazioni; questo equivale ad un sistema di numerazione a base 8, detto anche sistema ottale. • Ad un gruppo di 4 cifre corrispondono 2^4 = 16 combinazioni; questo equivale ad un sistema di numerazione a base 16, detto anche sistema esadecimale. – Nel sistema ottale bastano 8 cifre • per cui si usano le prime 8 cifre del sistema decimale, ovvero le cifre 0,1,2,3,4,5,6,7. – Nel sistema esadecimale ne occorrono 16: • si è convenuto di usare le 10 cifre del sistema decimale (da 0 a 9), più le prime 6 lettere dell’alfabeto (da A, che rappresenta 10, ad F, che rappresenta 15). 4 Il sistema ottale • Per passare da binario ad ottale: – si divide il numero in triplette, a partire da destra; • se il numero di cifre binarie non è multiplo di tre, l’ultima tripletta sulla sinistra conterrà solo una o due cifre: in tal caso si aggiungono degli zeri a sinistra fino a costituire una tripletta completa; • ad esempio, 1011011 diventa (001)(011)(011) – si sostituisce ad ogni tripletta la corrispondente cifra ottale, secondo lo schema: 000 001 010 011 100 101 110 111 ==> ==> ==> ==> ==> ==> ==> ==> 0 1 2 3 4 5 6 7 • Nell’esempio precedente: 1011011 diventa 133 • Il sistema ottale è molto comodo perché usa le stesse cifre del decimale, ma: • è’ ormai usato raramente, perché i moderni computer sono basati su bytes di 8 bit, che non sono multipli di 3 5 Il sistema esadecimale • Per passare da binario ad esadecimale: – si divide il numero in gruppi di 4 cifre, a partire da destra; • se il numero di cifre binarie non è multiplo di quattro, l’ultima gruppo sulla sinistra conterrà un numero di cifre inferiore: in tal caso si aggiungono degli zeri a sinistra fino a costituire un gruppo completo di 4 cifre; • ad esempio, 1011011 diventa (0101)(1011) – si sostituisce ad ogni gruppo di 4 cifre la corrispondente cifra esadecimale, secondo lo schema: 0000 0001 0010 0011 0100 0101 0110 0111 ==> ==> ==> ==> ==> ==> ==> ==> 0 1 2 3 4 5 6 7 1000 1001 1010 1011 1100 1101 1110 1111 ==> ==> ==> ==> ==> ==> ==> ==> 8 9 A B C D E F • Nell’esempio precedente: 1011011 diventa 5B • Il sistema esadecimale è ormai adottato universalmente. 6 Bit e Byte • Bit – Il bit (binary digit) è l’equivalente di una cifra binaria: 0 oppure 1. • Il bit sta alla base del funzionamento dei computer (di tutti i computer, dall’ENIAC del 1946 all’ultimo Pentium Pro): in altri termini, i circuiti elementari eseguono esclusivamente operazioni su singoli bit. • Tuttavia il bit è una quantità troppo piccola da trattare isolatamente: per motivi di efficienza e di praticità i bit sono sempre trattati a gruppi. • I gruppi di bit sono chiamati byte e word. • Byte – Il byte è la quantità più piccola di informazione effettivamente trattata dal computer • I primi computer utilizzavano byte da 6 bit, che potevano essere comodamente rappresentati da 2 cifre ottali • E’ ormai universalmente diffuso l’utilizzo del byte come pacchetto di 8 bit, per cui i due termini sono praticamente sinonimi. • In francese si dice octet 7 Byte e Word – 1 byte = 8 bit = 2 cifre esadecimali – Un byte di 8 bit può contenere 2^8 = 256 diverse combinazioni di cifre binarie. – Cosa può rappresentare un byte? • Un numero intero positivo compreso tra 0 e 255; • oppure un numero intero relativo compreso tra 128 e +127; • un carattere – con qualche approssimazione, come si vedrà più avanti: vi sono diversi tipi di codifica (corrispondenze) tra byte e caratteri, e per alcuni alfabeti non basta un solo byte… • in generale, un “atomo” di informazione di qualsiasi genere (numerica, grafica, suono, video) secondo una particolare codifica. – Un byte rimane una quantità troppo piccola per gran parte degli usi • I circuiti dei computer sono progettati per trattare contemporaneamente (in parallelo) pacchetti di due o più byte, chiamati comunemente word. 8 Word • Word – Corrisponde alla quantità di bit trattata contemporaneamente dal processore – Un word (parola) è un multiplo del byte: • la dimensione effettiva dipende dal tipo di processore; • i processori per Pc più antichi (Intel 8088) usavano word di 1 byte, ovvero 8 bit; • la generazione successiva (Intel 80286) usava word di 2 byte, ovvero 16 bit; • gran parte dei processori esistenti usano word di 4 byte (32 bit); • un numero ancora limitato di processori di fascia alta usa word di 8 byte (64 bit). • In passato alcune macchine (CDC) usavano word di 60 bit (10 byte da 6 bit) 9 Byte come unità di misura – Il byte è l’unità di misura universale nel mondo informatico • Viene usata per misurare le dimensioni delle memorie e di periferiche di ogni genere (dischi rigidi, dischetti, nastri, CD…). • I multipli del byte sono espressi come potenze di 1000, come nel sistema metrico decimale • In realtà le potenze di 10 non sono comode in campo informatico, che è basato sulla numerazione binaria e sulle potenze di 2. • Un compromesso è stato trovato partendo dal fatto che 2^10 = 1024 è circa 1000, 2^20 = 1.048.576 è circa 1.000.000, e così via. – Kilobyte (circa mille byte) • è abbreviato in KB o “Kappa”; 1 KB = 2^10 = 1024 byte, circa 10^3. – Megabyte (circa un milione di byte) • è abbreviato in MB o “Mega”; 1 MB = 2^20 = 1.048.576 byte, circa 10^6. – Gigabyte (circa un miliardo di byte) • è abbreviato in GB o “Giga”; 1 GB = 2^30 = 1.073.741.824, circa 10^9. – Terabyte (circa 1000 miliardi di byte) • è abbreviato in TB o “Tera”; 1 TB = 2^40 = 1.099.511.627.776, circa 10^12. 10 Alcuni ordini di grandezza • Una cartella dattiloscritta: 2 KB • Una pagina di monitor in B/N, in modo testo (25 righe * 80 colonne): 2KB • Una pagina di libro, solo testo: 6-8 KB • Un libro (manuale di computer), solo testo: 5 M • Una pagina di monitor a colori, a media risoluzione (600*800*3 byte): 1,5 MB • Una immagine (un quarto di pagina), ad alta risoluzione, non compressa: 600 K. • Idem, compressa (GIF o JPEG): 60-100KB • 1 enciclopedia (testo e immagini compresse): circa 1 GB. • 1 ora di musica, non compressa: 650 MB • 1 ora di musica, compressa (MP3): 60 MB • 2 ore di film (DVD): 4,7 GB • 2 ore di film, compressi (DIVX): 700-800 MB 11 Caratteri – La prima codifica dei caratteri (BCD, binary coded decimal) usava 6 bit per carattere (64 combinazioni) • vi erano solo le maiuscole e un po’ di punteggiatura. – Il primo standard ASCII (American Standard Code for Information Interchange), del 1968, usa 7 bit (128 combinazioni) • viene introdotta la distinzione tra maiuscole e minuscole e una gamma più completa di segni e punteggiatura; non vi sono caratteri accentati; • lo standard ASCII riserva i primi 32 codici a caratteri “speciali” per il controllo della trasmissione. – IBM introduce EBCDIC (Extended BinaryCoded Decimal Interchange Code), una codifica estesa a 8 bit (256 combinazioni) • la codifica e l’ordinamento dei caratteri sono completamente diversi da quelli ASCII; • rimane confinata in ambito IBM 12 Il codice ASCII – Con l’avvento del DOS e dei primi PC viene introdotto un “ASCII esteso” a 8 bit (256 combinazioni). • I primi 128 caratteri coincidono con l’ASCII standard; • gli altri 128 possono variare a seconda della versione nazionale, e comprendono caratteri grafici e caratteri accentati. – A metà degli anni ‘80 la ISO (International Standard Organization) introduce nuovi tipi di estensioni ASCII (ISO 8859) • 6 set di caratteri “Latin” (Latin 1 corrisponde all’Europa occidentale, 2 Est, 3 Sud, 4 Nord, 5 Turco, 6 Nordico), più Greco, Cirillico, Arabo ed Ebraico; • questo standard non comprende più i caratteri grafici; • Latin 1 è lo standard usato da Windows e HTML • Verrà probabilmente introdotto un Latin 0 con il simbolo dell’euro. – L’ultimo standard è UNICODE, che usa 16 bit (65535 combinazioni). • UNICODE consente di rappresentare i caratteri di 24 lingue, comprese quelle orientali. 13 Esempi di ASCII • Caratteri di controllo – Vanno da 0 a 31; ad esempio: • 7 • 8 • 9 Bell Backspace Tab • Cifre numeriche – Da 48 a 57 (0x30 - 0x3f) • 48 • 57 Zero Nove • Caratteri maiuscoli – Da 65 a 90 (0x41 - 0x5a) • 65 • 90 A Z • Caratteri minuscoli – Da 97 a 122 (0x61 - 0x7a) • 97 • 122 a z • Simboli vari – Tutti gli altri • 43 • 58 + : 14 Rappresentazione di numeri • Valori booleani • Falso è sempre rappresentato come 0 • Vero è sempre rappresentato come diverso da 0 (in genere, 1) • Numeri Interi • Il primo bit è usato per il segno • I numeri negativi sono rappresentati come “complemento a 2” – Interi di 1 byte • da -128 a +127 – Interi di 2 byte • da -32768 a +32767 – Interi di 4 byte • da -2147483648 a 2147483647 15 Numeri Floating Point • Reali (Floating Point) • Possono essere di 32, 64, 128 bit. • Vi sono diverse codifiche, ma il criterio è sempre lo stesso. • La codifica più diffusa è IEEE (Institute of Electrical and Electronical Engineers). • Il numero è il prodotto di una mantissa per una base elevata ad un esponente; – in IEEE la base è 2: – numero = frazione * 2 ^ (esponente - bias) – la frazione è normalizzata in modo che il primo bit sia sempre 1 – il bias serve ad evitare l’uso di esponenti negativi – 1 bit è sempre usato per il segno – Reali a 32 bit (4 byte) • 8 bit per l’esponente e 23 per la mantissa • Il bias è 127 • I numeri rappresentabili vanno da 1.17549E–38 a 3.40282E+ 38 • La precisione è di 6-7 cifre decimali – Reali a 64 bit (8 byte) • 11 bit per l’esponente e 52 per la mantissa • Il bias è 1023 • I numeri rappresentabili vanno da 2.22507E–308 a 1.79769E+308 • La precisione è di 15-16 cifre decimali 16