La codifica delle informazioni Bit e byte Come già visto l elaboratore è in grado di rappresentare informazioni al proprio interno solo utilizzando cifre binarie (bit) che solitamente vengono manipolate a gruppi: in particolare, per essere elaborate le cifre binarie vengono raggruppate ins equenze di 8 bit. Una di tali sequenze prende il nome di byte. La convenzione di raggruppare i bit in gruppi di 8 è uno standard accettato ormai da tutte le case costruttrici di computer (imposto negli anni 60 dalla IBM). Inoltre, per il trattemnto dei dati numerici, gli elaboratori operano su sequenze composte da un numero fisso di byte formando parole (esistono parole da 1, 2, 4 o 8 bytes). Codici alfanumerici I dati immessi da tastiera vengono memorizzati temporaneamente in memoria centrale (R.A.M.), poi conservati in memoria di massa, per far ciò è necessario codificare i dati. Pag. 1
Nella fase di output i codici, provenienti dalla memoria centrale vengono decodificati per arrivare su video o su carta in un formato comprensibile all utente. Il primo alfabeto per la codifica standard fu il codice A.S.C.I.I. A merican che utilizzava 7 bit per rappresentare fino a 2 7 S tandard = 128 caratteri distini. C ode for Successivamente il codice venne esteso a 1 byte = 8 bit per rappresentare fino a 2 8 I nformation = 256 caratteri distinti. I nterchange Il codice A.S.C.I.I. viene attualmente usato dai personal computer. Un analogo codice, E.B.C.D.I.C., viene usato dai minicomputer e mainframe IBM E xtended B inary C ode D ecimal I nter C hange Codice ASCII Pag. 2
Codice EBCDIC Pag. 3
Per rappresentare il valore, solo nel caso di numeri si usa il sistema BINARIO per poter effettuare operazioni ARITMETICHE Per rappresentare simboli di qualunque tipo, compresi i numeri ma solo con riferimento alle cifre e non al loro valore, si usano le codifiche A.S.C.I.I. E.B.C.D.I.C. che rappresentano ogni carattere con 1 byte = 8 bit mentre con la tecnica B.C.D. si può rappresentare ogni carattere con 1 semibyte = 4 bit Codici numerici Rappresentazione zoned La codifica zoned prende origine dalla codifica E.B.C.D.I.C. Con questa codifica ciascuna cifra occupa un byte: F 1 1 1 1 0 0 0 0 0 F 1 1 1 1 0 0 0 1 1 F 1 1 1 1 0 0 1 0 2 F 1 1 1 1 0 0 1 1 3 Zonatura Parte Digit Contiene la parte fissa Contiene la parte variabile, diversa per ogni numero Per rappresentare un numero relativo si posiziona il segno al posto del semibyte di peso maggiore della cifra di peso minore del numero stesso. In particolare: per rappresentare il segno + si utilizza il simbolo C 16 = 12 10 per rappresentare il segno - si utilizza il simbolo D 16 = 13 10 Pag. 4
Esempi rappresentazione del numero +412 1111 0100 1111 0001 1100 0010 F 4 F 1 C 2 4 1 2 (+) un numero di 3 cifre occupa 3 byte. rappresentazione del numero -1278 1111 0001 1111 0010 1111 0111 1101 1000 F 1 F 2 F 7 D 8 1 2 7 8 (-) un numerto di 4 cifre occupa 4 byte. Rappresentazione packed La codifica packed prende origine dalla codifica zoned. Partendo dalla codifica zoned, eliminando la zonatura ed aggiungendo il segno nel semibyte di peso maggiore si ottiene la codifica packed. E anche possibile dire che per ottenere la codifica packed è sufficiente codificare ogni cifra decimale secondo la tecnica B.C.D. aggiungendo un semibyte per il segno e completando con eventuali 0 non significativi per raggiungere un numero di pari di semibyte. codifica zoned un numero di 3 cifre occupa 3 byte. codifica packed un numero di 3 cifre occupa 2 byte. Come nel caso della rappresentazione packed, per rappresentare il segno: + si utilizza il simbolo C 16 = 12 10 - si utilizza il simbolo D 16 = 13 10 In questo caso il segno si posiziona al posto del semibyte di peso minore della cifra di peso minore del numero stesso (vedi esempio). Codifica nella forma del complemento a 2 1111 0100 1111 0001 1100 0010 F 4 F 1 C 2 4 1 2 (+) 0100 0001 0010 1100 4 1 2 C 4 1 2 (+) La forma del complemento a 2 è la più usata per repparesentare numeri durante la fase di elaborazione. Essa consiste nel rappresentare un numero negativo per mezzo del complemento a 2 del corrispondente numero positivo. Pag. 5
In pratica, con la codifica nella forma complemento a 2, si ha che l usuale valore posizionale è associato a ciascuna cifra binaria con l esclusione del bit più significativo al quale è associato un valore negativo. I numeri possono essere rappresentati con 2, 4, 8 byte, a seconda del tipo di precisione scelta. Il segno viene rappresentato nel primo bit. Esempio: 0 numero positivo 1 numero negativo 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 + 50 Lo stesso numero con il segno meno viene rappresentato in complemento a 2: 50 10 =110010 2 complemento a 1 1111111111001101 + 1 = 1111111111001110 complemento a 2 Il massimo numero rappresentabile con 2 byte è: 2 15-1 = 32767 Rappresentazione in virgola mobile o floating point Dato un qualunque numero questo può essere rappresentato in virgola mobile (floating point) per estendere il rango dei numeri che possono essere rappresentati in un dato numero di bits. La rappresentazione floating point è molto simile a quella denominata scientifica o standard. Un numero rappresentato in notazione scientifica è il prodotto di due parti: una delle due, detta fattore di scala (caratteristica o esponente), è una potenza del 10 mentre l altra parte, detta parte frazionaria (mantissa), è un numero tale che, moltiplicato per il fattore di scala, dà il numero che si vuole rappresentare. Si dice che la rappresentazione scientifica è normalizzata, se la parte frazionaria è tale che: è minore di 1, la cifra più significativa è diversa da 0. Consideriamo i seguenrti esempi decimali: -12,75 -> -0,1275 x 100 -> -0,1275 x 10 2 +140 -> 0,14 x 1000 -> 0,14 x 10 3 +0,075 -> 0,75 x 0,1 -> 0,75 x 10-1 L elaboratore converte il numero decimale seguendo le consuete regole: per la parte intera usa il metodo delle divisioni successive, Pag. 6
per la parte decimale usa il metodo delle moltiplicazioni successive, convertendo in binario il primo degli esempi avremo: -12,75 10 -> 1100,11 2 -> 0,110011 x 10000 -> 0,110011 x 2 +100 Consideriamo i seguenti esempi scritti interamente in base 2 101000,0 = +0,101 X 1000000 = 0,101 x 10 110 0,00011 = +0,11 X 0,001 = 0,11 x 10-11 -110,11 = -0,11011 X 1000 = -0,11011 x 10 11 Esistono vari metodi per la rappresentazione dei dati in un computer ma, a scopo esmplificativo, si può considerare il caso in cui si utilizzano 1 byte per l esponente e 2 bytes per la mantissa, con il primo bit rappresenta il segno. La rappresentazione del numero -1100,11 2 potrà quindi essere effettuata con 3 byte nel seguente modo: -1100,11 = -0,110011 x 10000 = -0,110011 x 10 100 (+) segno (-) segno 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 Caratteristica Mantissa Esercizi 1. Rappresentare, con la tecnica: o zoned o packed o complemento a 2 i numeri indicati ed indicare il numero di byte che li compongono. 2. Rappresentare, con la tecnica floating point: 1. -852 2. +159 3. -7539 4. -3582 5. +1596 6. +1236 7. +789 8. -654 9. -123 10. +963 1. -85 2. +0,15 3. 0,075 4. 0,035 5. +15 Pag. 7