1 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.
2 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.
3 Sistema binario: esempi Esempio dei primi numeri in forma binaria: Esempio di decodifica di un numero binario: –Da binario a decimale: : 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 = = 91
4 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).
5 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, diventa (001)(011)(011) –si sostituisce ad ogni tripletta la corrispondente cifra ottale, secondo lo schema: 000 ==> ==> ==> ==> ==> ==> ==> ==> 7 Nell’esempio precedente: 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
6 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, diventa (0101)(1011) –si sostituisce ad ogni gruppo di 4 cifre la corrispondente cifra esadecimale, secondo lo schema: 0000 ==> ==> ==> ==> ==> ==> A 0011 ==> ==> B 0100 ==> ==> C 0101 ==> ==> D 0110 ==> ==> E 0111 ==> ==> F Nell’esempio precedente: diventa 5B Il sistema esadecimale è ormai adottato universalmente.
7 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
8 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 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.
9 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)
10 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 = è circa , 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 = byte, circa 10^6. –Gigabyte (circa un miliardo di byte) è abbreviato in GB o “Giga”; 1 GB = 2^30 = , circa 10^9. –Terabyte (circa 1000 miliardi di byte) è abbreviato in TB o “Tera”; 1 TB = 2^40 = , circa 10^12.
11 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): KB 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): MB
12 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 Binary- Coded 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
13 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.
14 Esempi di ASCII Caratteri di controllo –Vanno da 0 a 31; ad esempio: 7Bell 8Backspace 9Tab Cifre numeriche –Da 48 a 57 (0x30 - 0x3f) 48Zero 57Nove Caratteri maiuscoli –Da 65 a 90 (0x41 - 0x5a) 65A 90Z Caratteri minuscoli –Da 97 a 122 (0x61 - 0x7a) 97a 122z Simboli vari –Tutti gli altri :
15 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 a –Interi di 4 byte da a
16 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 E–38 a E+ 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 E–308 a E+308 La precisione è di cifre decimali