Fondamenti di Informatica 10110 01100 01011 Rappresentazione dell’informazione Codifica Binaria Fondamenti di Informatica - D. Talia - UNICAL 1 Rappresentazione dell’informazione 10110 01100 01011 Tutta l'informazione in un calcolatore è rappresentata tramite numeri. Questi numeri sono espressi come sequenze di 0 e 1. I calcolatori elaborano l'informazione effettuando operazioni su numeri. I sistemi di comunicazione scambiano informazioni spostando sequenze di numeri. Fondamenti di Informatica - D. Talia - UNICAL 2 Rappresentazione dell’informazione 10110 01100 01011 I computer sono sistemi digitali perché lavorano con digit (0 e 1). Bit : valore 0 (tensione bassa), valore 1 (tensione alta). Byte: sequenza di 8 bit. Esempio: 01110010 L’informazione viene creata ed acceduta in unità di informazione dette word. Una word è creata come un multiplo di byte. Lunghezze di una word: 8 (byte), 16, 32, 64, 128 bit. Un word a k bit può contenere 2k valori (da 0 a 2 k-1). Fondamenti di Informatica - D. Talia - UNICAL 3 Numeri Naturali 10110 01100 01011 Numerazione araba: dieci cifre (0..9), notazione posizionale : il valore di una cifra dipende dalla sua posizione. La cifra più a sinistra ha un valore maggiore. Ad esempio: 312, le tre cifre hanno valore diverso a secondo della posizione che occupano. La numerazione romana è non posizionale ma additiva. Ad esempio: MCCCX. Fondamenti di Informatica - D. Talia - UNICAL 4 Numeri Naturali 10110 01100 01011 Sistemi di numerazione posizionale a base p : Se si ha il numero anan-1an-2…..a0 N p = an × p n + an −1 × p n −1 + ... + a1 × p1 + a0 = n ∑ ai × p i i =0 Se p = 10 si ha che 745 = 7 × 102 + 4 × 101 + 5 × 100 Se p = 4 si ha che 213 = 2x42 + 1x41 + 3x42 Fondamenti di Informatica - D. Talia - UNICAL 5 Numeri Binari, Ottali, Esadecimali 10110 01100 01011 Sistema binario p=2 alfabeto ={0, 1} 10101101 = (1x27+0x26 + 1x25 + 0x24 + 1x23 + 1x22 + 0x21 + 1x20) = (128 + 32 + 8 + 4 + 1) = 17310 01101010 = (0x27+1x26 + 1x25 + 0x24 + 1x23 + 0x22 + 1x21 + 0x20) = (64 + 32 + 8 + 2 ) = 10610 00101111 = (0x27+0x26 + 1x25 + 0x24 + 1x23 + 1x22 + 1x21 + 1x20) = (32 + 8 + 4 + 2 + 1) = 4710 Fondamenti di Informatica - D. Talia - UNICAL 6 Numeri Binari, Ottali, Esadecimali 10110 01100 01011 Sistema ottale p=8 alfabeto ={0, 1, 2, 3, 4, 5, 6, 7} 2548 = 2x82 + 5x81 + 4x80 = 128 + 40 + 4 = 17210 Sistema esadecimale p=16 alfabeto ={0, 1, 2, 3, 4, 5, 6, 7, 8 , 9, A, B, C, D, E, F} B7F16 = 11x162 + 7x161 + 15x160 = 294310 Fondamenti di Informatica - D. Talia - UNICAL 7 Numeri Binari, Ottali, Esadecimali 10110 01100 01011 decimale binario ottale esadecimale 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4 5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 Fondamenti di Informatica - D. Talia - UNICAL 8 Conversione da base 2 a base 10 10110 01100 01011 Si divide il numero per due e si prende il resto 173 : 2 = 86 86 43 21 10 5 2 1 Æ :2 :2 :2 :2 :2 :2 :2 1 = 43 = 21 = 10 =5 =2 =1 =0 Æ Æ Æ Æ Æ Æ Æ 0 1 1 0 1 0 1 Î 10101101 L’elenco dei resti si legge dal basso verso l’alto. Fondamenti di Informatica - D. Talia - UNICAL 9 Conversione da base 2 a base 8 e 16 10110 01100 01011 La conversione da base 2 a base 8 e base 16 è abbastanza semplice. Conversione da base 2 a base 8 Si divide il numero in triple e ogni tripla si traduce nella cifra ottale ( 01.101.100 Æ 154). Conversione da base 2 a base 16 Si divide il numero in quadruple e ogni quadrupla si traduce nella cifra esadecimale ( 0011.1011 Æ 3B). Fondamenti di Informatica - D. Talia - UNICAL 10 Codifica dei Numeri interi 10110 01100 01011 Numeri Interi : numeri naturali + 0 + negativi. E’ quindi necessario rappresentare il segno del numero, per questo si usa il bit del segno 0 Æ + (numeri positivi), 1 Æ - (numeri negativi). NB: nelle variabili short, int e long non si possono rappresentare tutti i valori interi (che sono infiniti) ma solo i valori che si possono memorizzare in 16, 32 e 64 bit. Occorre porre attenzione al problema del trabocco (overflow). Fondamenti di Informatica - D. Talia - UNICAL 11 Codifica dei Numeri reali 10110 01100 01011 Naturalmente in informatica esiste anche la difficoltà di rappresentare i numeri reali (che è un insieme denso) con un numero finito di bit. Due possibili rappresentazioni: Virgola fissa, Virgola mobile. Rappresentazione in virgola fissa: si stabilisce a priori la posizione del punto decimale e quindi le cifre si suddividono in due parti. Numero fissato di bit per la parte intera e per la parte frazionaria. Ad esempio: 6935.14084 oppure 5765430.192 Fondamenti di Informatica - D. Talia - UNICAL 12 Codifica dei Numeri reali 10110 01100 01011 Rappresentazione in virgola mobile (floating point): numero variabile di bit per le due parti. Mantissa : valore m tra -1 e 1 (frazionario) Caratteristica: esponente n R = mxbn 43536381816 12 m n E’ possibile rappresentare numeri molto grandi con poche cifre oppure con precisione numeri molto piccoli. Normalizzazione: .0043536 x 104 Æ .43536 x 102 Il problema dell'approssimazione dei numeri reali tuttavia rimane ed è viene studiato nel settore del calcolo numerico. Fondamenti di Informatica - D. Talia - UNICAL 13 Codifica dei Caratteri 10110 01100 01011 Viene usato un codice di traduzione: ad ogni carattere è assegnato un valore tramite una sequenza di bit. Il codice finora più usato è il codice ASCII (American Standard Code for Information Interchange) che usa 7 o 8 bit per rappresentare fino a 256 caratteri. Contiene tre classi di caratteri: Caratteri di comando/controllo, caratteri alfanumerici e segni. Nelle operazioni di trasmissione l’ottavo bit si usa come bit di parità. Fondamenti di Informatica - D. Talia - UNICAL 14 Codifica dei Caratteri 10110 01100 01011 L’estensione dello standard ASCII è il codice UNICODE. Lo standard UNICODE estende il codice ASCII e lo assorbe (fino ai primi 128 caratteri è uguale) per rappresentare altri alfabeti ed un set più ampio di caratteri (lettere accentate ecc.). Usa 16 bit per rappresentare un numero molto grande di caratteri. Per questa ragione le variabili di tipo char in Java sono rappresentate tramite 16 bit. Fondamenti di Informatica - D. Talia - UNICAL 15