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 (BIT – BINARY DIGIT )
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’??? 1. INFORMAZIONE (alfabeto) 2. ISTRUZIONI (CODICE OPERATIVO) 3. ISTRUZIONI DI STAMPA DATO NUMERICO DATO ALFANUMERICO
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 FISSA (FIXED POINT) 0,00367 = VIRGOLA MOBILE (FLOATING POINT) 367 x 10 ^-5 = 367 E -5 notazione scientifica formato esponenzial mantissa esponente
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
NUMERO MINIMO E NUMERO MAX RAPPRESENTABILE dal computer ? 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 se INDIRIZZO CELLA di MEMORIA .............. add ???
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 000111 001100 LINGUAGGIO LINGUAGGIO DI PROGRAMMAZIONE 000111 001100 LINGUAGGIO MACCHINA TRADUTTORI
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 ALLORA OGNI BYTE POTRA’ ESSERE 0000 = 0 0001 = 1 0010 = 2 0011 = 3 0100 = 4 0101 = 5 1010 = A 0110 = 6 1011 = B 0111 = 7 1100 = C 1000 = 8 1101 = D 1001 = 9 1110 = E 1111 = F ALLORA OGNI BYTE POTRA’ ESSERE DIVISO IN SEMIBYTE IL QUALE POTRA’ ESSERE TRASFORMATO IN HEX 10011100 = 9C 10001111 = 8F H H