CODIFICA DATI/ISTRUZIONI Nel calcolatore tutta l’informazione e’ codificata in binario (sequenza di 0,1) Perche’ il calcolatore e’ formato da componenti BISTABILI: - elettronici (alta/bassa tensione elettr.) - magnetici (differente stato di polarizzazione magnetica) - ottici (alternanza luce/buio) 2 STATI “FISICI” (possibili, nitidi e sicuri) che vengono RAPPRESENTATI (denotati) con 0 e 1 che sono anche le cifre del sistema binario CODIFICA DATI/ISTRUZIONI • CODIFICA BINARIA corrisponde ad un FENOMENO FISICO che puo’ essere osservato in 2 stati • La limitazione a soli 2 stati e’ nata da motivazioni tecnologiche (minori probabilita’ di guasti e di errori) • Codifica binaria da “NECESSITA’” ad “OPPORTUNITA’” per la standardizzazione della rappresentazione di tutte le informazioni CODIFICA DEI CARATTERI • Perche’??? DATO NUMERICO 1. INFORMAZIONE DATO ALFANUMERICO (alfabeto) 2. ISTRUZIONI (CODICE OPERATIVO) 3. ISTRUZIONI DI STAMPA CODIFICA DEI CARATTERI 3 CATEGORIE DI CARATTERI: • CARATTERE ALFANUMERICO (A,B,C,.....Z a,b,c,.....z 0,1,......9) • SEGNI di punteggiatura o aritmetici ( , ; : + / - * . $ & # .........) • CARATTERI DI COMANDO codici per la trasmissione codici per il controllo della stampante CODIFICA DEI CARATTERI “PATTERNS OF BITS” • UTILIZZA UNA STRINGA/SEQUENZA DI BIT • E’ UNA CONVENZIONE TRA PRODUTTORI che determina: la compatibilita’ tra macchine la necessita’ o non di “conversioni” (la trascodifica dei dati) CODIFICA DEI CARATTERI • • • • IL NUMERO DEI CARATTERI RAPPRESENTABILI DIPENDE DAL NUMERO DEI BIT UTILIZZATI: con 6 bit : set di 64 caratteri con 7 bit : set di 128 caratteri con 8 bit : set di 256 caratteri con 16 bit : set di 65.536 caratteri Per rappresentare il ns alfabeto occorrono almeno 7 bit (128 configurazioni) “Le convenzioni per i caratteri” • La convenzione deve essere accettata da tutti gli utilizzatori • A livello internazionale sono stati definiti degli “standard” • La situazione degli standard di codifica è la seguente: CODIFICA DEI CARATTERI codifiche in “disuso”: a 6 BIT (64 caratteri) 26 lettere dell’alfabeto + 10 cifre decimali + 28 segni e caratteri speciali (limitata: le sole lettere dell’alfabeto sono 52) • B.C.D. per carattere (alcune macchine IBM) • CODICE FIELDDATA (macchine UNIVAC) CODIFICA DEI CARATTERI CODIFICHE IN “USO” A 8 BIT: • ASCII (American Standard Code for Information Interchange ) STANDARD (128 caratteri) utilizza 7 bit, ma 1 bit ignorato o di parita’ nelle trasmissioni dei dati – utilizzata da tutti i produttori di tutti i paesi • ASCII ESTESO (256 caratteri): NON STANDARD • E.B.C.D.I.C. : no PC (mondo IBM mini/mainframe - AS400) CODIFICA DEI CARATTERI Esempio CODIFICA ASCII simbolo ASCII (code) 0 00110000 (48) 1 00110001 (49) 2 00110010 (50) 3 00110011 (51) .............................................. A 01000001 (65) B 01000010 (66) a 01100001 (97) CODIFICA DEI CARATTERI CODIFICHE più RECENTI • Poiche’ 256 caratteri sono insufficienti per rappresentare i simboli dell’alfabeto di altre lingue, occorrono 16 BIT • UNICODE codifica a 16 bit 65.536 caratteri Nuovo standard Codifica dei NUMERI IN ASCII • Ogni cifra numerica può essere codificata con il corrispondente carattere ASCII • ES: 1951 00110001 00111001 00110101 00110001 • Spreca spazio (non è efficiente) • Non è elaborabile numericamente CODIFICA dei NUMERI • NUMERI codificati con il SISTEMA DI NUMERAZIONE BINARIO (partendo dal presupposto che qualsiasi numero decimale può essere facilmente convertito in numero binario) • La codifica binaria NON COSTITUISCE UN LIMITE all’INSIEME DEI NUMERI RAPPRESENTABILI • IL NUMERO MASSIMO rappresentabile viene dato dal N.RO dei BIT a disposizione • Con N bit si possono codificare numeri naturali compresi tra 0 <-> ((2^N) - 1) Codifica dei numeri - NATURALI BIT INTERVALLO NUMERICO 2 0 - 3 4 0 - 15 8 (1 byte *) 0 - 255 12 0 - 4.095 16 (2 byte *) 0 - 65.535 24 (3 byte ) 0 - 16.777.215 32 (4 byte *) 0 - 4.294.967.295 • BYTE = unità generalmente trattata (vedi es.xls) Codifica dei NUMERI NATURALI • Il numero piu’ grande rappresentab. e’ = 2^n - 1 dove n indica il n.ro di bit disponibili • Nel computer non esiste il - infinito e il + infinito. • ESISTE UN NUMERO MINIMO ED UN NUMERO MASSIMO che dipende dal n.ro dei bit disponibili • Nel momento in cui si fissa il n.ro di bit destinati a rappresentare un numero, automaticamente si fissa anche il n.ro massimo gestibile • Oltre si va in “overflow” (travaso) – errore! Codifica dei NUMERI INTERI (positivi e negativi) • Numeri rappresentabili SEMPRE (quale sia la tecnica adottata): da -2^(n-1) a +2^(n-1)-1 • Con 1 byte (8 BIT): naturali : 0 - 255 interi : da -128 a + 127 • 1° tecnica con 1 BIT PER IL SEGNO 0 per i positivi 1 per i negativi I restanti 7 bit per il NUMERO • Es.xls – rappresentazione numeri Codifica dei numeri INTERI • “Binario con bit di segno” è facile da leggere • Poco efficiente: 2 rappresentazioni per lo zero: zero positivo e zero negativo, ma soprattutto NON E’ ELABORABILE CON FACILITA’ • 2° tecnica: COMPLEMENTO A 2 NUMERI negativi : COMPLEMENTO a 2 LUCIDI BENTIVOGLIO – pagg. 63 -77 RAPPRESENTAZ. NUMERI FRAZIONARI / REALI • VIRGOLA MOBILE (FLOATING POINT) • VIRGOLA FISSA (FIXED POINT) 0,00367 = 367 x 10 ^-5 = 367 E -5 mantissa esponente notazione scientifica formato esponenzial RAPPRESENTAZ. NUMERI FRAZIONARI / REALI • Con pochi simboli consente di rappresentare numeri molto grandi e numeri molto piccoli 7.670.000.000 = 767 E +7 0,000001465 = 1465 E -9 • FLOATING sia in DECIMALE che in BINARIO: OCCUPA MENO BIT RAPPRESENTAZ. NUMERI FRAZIONARI / REALI • numero : 12.000.000.000.000 • VIRGOLA FISSA : richiede almeno 44 bits (6 byte) 2^43= 8.796.093.022.208 2^44= 17.592.186.044.416 • VIRGOLA MOBILE = 12 E +12 S MANTISSA S ESPONENTE 1 4 1 4 = 10 bits (2 byte) FLOATING POINT LA PRECISIONE DEL NUMERO DIPENDE DAL NUMERO DI BITS destinati alla MANTISSA es: 12.300.000.000.000 = 0,123 E +14 con 8 bit : mantissa = 123 con 6 bit : mantissa = 12 (2^6 = 0 - 63) FLOATING POINT LA DIMENSIONE DEL NUMERO (n.ro MAX E MIN) dipende dal NUMERO DI BITS RISERVATI ALL’ESPONENTE Es: a parita’ di mantissa 123 E 15 = 123.000.000.000.000.000 123 E 18 = 12.300.000.000.000.000.000 VIRGOLA FISSA / MOBILE • VIRGOLA FISSA NEL GESTIONALE dove e’ importante la precisione e non la “dimensione” dei numeri • VIRGOLA MOBILE NELLO SCIENTIFICO dove e’ importante poter trattare n.ro molto grandi o molto piccoli FLOATING POINT • SHORT REAL (SINGOLA PRECISIONE) 32 BITS • 1 per il segno, 23 per la mantissa, 8 per l’esponente • ** da 10^-38 a 10^ 38 • LONG REAL (DOPPIA PRECISIONE) • 64 BITS (51 per mantissa) • da 10^-308 a 10^308 CODIFICHE DEI NUMERI NUMERO MINIMO E NUMERO MAX RAPPRESENTABILE dal computer ? dipende: - codifica adottata - modalita’ di rappresentazione (fissa/mobile) - n.ro byte che il linguaggio di programmazione usa (FISSO / VARIABILE ) es: BASIC st. (2 byte) COBOL COSA RAPPRESENTA IL BYTE: 01000001 ??? • se BINARIO PURO: con 1 byte = 65 decimale parte di 1 o + byte = ???? • se B.C.D.: 0100 = 4 0001 = 1 41 decimale COSA RAPPRESENTA IL BYTE 01000001 ??? • se ASCII : A • se EBCDIC = L • se ISTRUZIONE MACCHINA add ??? • se INDIRIZZO CELLA di MEMORIA .............. COSA RAPPRESENTA IL BYTE 01000001 ??? • se NUMERO REALE / FLOAT: mantissa o parte della mantissa oppure tutto (o parte) esponente • se IMMAGINE ............. • se SUONO...(formato .WAY?) DA CHI DIPENDE L’INTERPRETAZIONE ??? DAL SOFTWARE !!!! LINGUAGGIO NATURALE LINGUAGGIO DI PROGRAMMAZIONE TRADUTTORI 000111 001100 LINGUAGGIO MACCHINA CODIFICA ESADECIMALE • CODIFICA A BASE 16 CHE SERVE SOLO PER SEMPLIFICARE LA RAPPRESENTAZIONE DEI BYTE IN BINARIO • NON VIENE USATA DAL COMPUTER MA DALL’ UOMO PER COMODITA’ DI RAPPRESENTAZIONE CODIFICA ESADECIMALE 0000 = 0 0001 = 1 0010 = 2 0011 = 3 0100 = 4 0101 = 5 0110 = 6 0111 = 7 1000 = 8 1001 = 9 1010 = A 1011 = B 1100 = C 1101 = D 1110 = E 1111 = F ALLORA OGNI BYTE POTRA’ ESSERE DIVISO IN SEMIBYTE IL QUALE POTRA’ ESSERE TRASFORMATO IN HEX 10011100 = 9C H 10001111 = 8F H