Corso di Laurea in Biotecnologie Informatica (Programmazione) Rappresentazione dell’informazione su calcolatore Anno Accademico 2009/2010 1 Introduzione ai BIT… Tutte le componenti di un calcolatore sono pensate per discriminare un segnale che può assumere due soli stati (acceso/spento, magnetizzato/smagnetizzato, etc.) senza vie di mezzo. Per questo motivo, l’elemento minimo di memoria in un calcolatore è un’unità che si può trovare in soli due stati. Tale unità minima prende il nome di BIT (Binary unIT). Di solito ai due stati in cui si può trovare l’unità minima di memoria sono associati convenzionalmente le due cifre 1 (acceso, magnetizzato, etc.) e 0 (spento, smagnetizzato, etc.). Le cifre 1 e 0 prendono il nome di Binary digIT e quindi anch’esse vengono indicate con il nome abbreviato di BIT. 2 Introduzione ai BIT… Di conseguenza con BIT si intende sia l’unità minima di memoria su un calcolatore che le cifre 1 e 0. L’unico linguaggio che un calcolatore è in grado di capire è quindi quello basato sui BIT, ovvero sull’alfabeto {1,0}. Di conseguenza tutto ciò che deve essere memorizzato e manipolato da un calcolatore deve essere codificato in stringhe (ovvero sequenze) di BIT. Il BYTE è la quantità più piccola di memoria che si riesce ad indirizzare ed è composta da 8 BIT: 1 kilobyte (KB) = 1024 byte 1 megabyte (MB) = 1024 kilobyte 1 gigabyte (GB) = 1024 megabyte 3 Codifica binaria La codifica binaria è la rappresentazione dell’informazione (numeri, caratteri, immagini, suoni, etc.) utilizzando un alfabeto limitato ai soli due simboli 1 e 0 (alfabeto binario). Nelle slide successive verrà trattata la codifica binaria dei numeri interi senza segno e dei caratteri, preceduta da un’introduzione dei sistemi numerici posizionali (tra i quali troviamo il sistema numerico decimale, che è il nostro sistema numerico, e quello binario su cui si basa l’aritmetica dei calcolatori) 4 Sistemi numerici posizionali Un sistema numerico si dice posizionale se le cifre (o simboli) usate per scrivere i numeri assumono un valore che dipende dalla posizione in cui si trovano. In un sistema numerico posizionale di base b, un numero Nb è espresso come somma di potenze di b moltiplicate per un coefficiente intero: n 1 N b Ci b i 0 i n è il numero di cifre di Nb 5 Sistemi numerici posizionali Esempio: il nostro sistema numerico decimale (b=10) cifre usate {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} N10 = 135410 Si può scrivere anche: 4 unità 5 decine 3 centinaia 1 migliaia N10 = 4 x 100 + 5 x 101 + 3 x 102 + 1 x 103 6 Sistemi numerici posizionali Esempio: il nostro sistema numerico decimale (b=10) indicando con Ci la cifra in posizione i a partire da quella meno significativa (il 4) che ha posizione 0: N10 = 1 3 5 4 C3 C2 C1 C0 si può scrivere: N10 = C0 x 100 + C1 x 101 + C2 x 102 + C3 x 103 7 Sistemi numerici posizionali Esempio: il nostro sistema numerico decimale (b=10) quindi si ha: 3 N10 Ci 10i i 0 per un numero in base decimale di n cifre si ha: n 1 N10 Ci 10i i 0 8 Sistemi numerici posizionali L’estensione della sommatoria precedente ad un numero di qualsivoglia cifre (n) in una generica base b è perciò immediata: n 1 N b Ci bi i 0 9 Sistemi numerici posizionali Un sistema numerico posizionale di base b utilizza le cifre da 0 a b-1 se b <= 10: esempio: b=2 {0, 1} 0 e 1 bit b=8 {0, 1, 2, 3, 4, 5, 6, 7} b=10 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} 10 Sistemi numerici posizionali Un sistema numerico posizionale di base b utilizza le cifre da 0 a b-1 e simboli aggiuntivi se b > 10: esempio: b=16 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} A 10, B 11, C 12, D 13, E 14, F 15 11 Sistemi numerici posizionali Esempio: sistema numerico ottale (b=8) N8 = 13548 si può scrivere: N8 = 4 x 80 + 5 x 81 + 3 x 82 + 1 x 83 = 60410 Attenzione: numerale è la sequenza di cifre che rappresenta un numero. Quindi 13548 e 135410 sono due numeri diversi che hanno lo stesso numerale 12 Sistemi numerici posizionali Esempio: sistema numerico esadecimale (b=16) N16 = 4F16 si può scrivere: N16 = F x 160 + 4 x 161 = 15 x 1 + 4 x 16 = 7910 13 Sistemi numerici posizionali Esempio: sistema numerico binario (b=2) N2 = 1 1 0 1 02 si può scrivere: N2 = 0 x 20 + 1 x 21 + 0 x 22 + 1 x 23 + 1 x 24 = 0 + 2 + 0 + 8 + 16 = 2610 14 Sistemi numerici posizionali Conversione da base 10 a base b dato un numero N10 in base 10 si effettuano successive divisioni intere per b fino ad ottenere un risultato nullo. I resti, elencati a partire da quello ottenuto per l’ultima divisione effettuata, forniscono il numerale che rappresenta, in base b, il numero decimale dato. 15 Sistemi numerici posizionali Esempio: conversione da base 10 a base 2 N10 = 610 6 / 2 resto = 0 3 / 2 resto = 1 1 / 2 resto = 1 0 1 1 02 16 Codifica binaria degli interi senza segno Problema: quanti e quali interi senza segno si possono rappresentare con un numero prefissato n di bit? n bit Con n bit si possono avere 2n disposizioni (con ripetizione) di 0 e 1 in n posizioni gli interi che si possono rappresentare sono quindi 2n 17 Codifica binaria degli interi senza segno L’intervallo degli interi che si possono rappresentare in n bit va da 0 0 0 0 0 0 0 0 0 n bit a 1 x 20 + 1 x 21 + … + 1 x 2n-1 = (2n-1) 1 1 1 1 1 1 1 1 n bit 18 Codifica binaria degli interi senza segno Esempio: per n=8 bit si possono rappresentare 256 interi che vanno da 0 0 0 0 0 0 0 0 0 8 bit 1 1 1 1 1 1 8 bit a 255 1 1 8 bit = 1 byte 1 KiloByte (kb) = 103 bytes 1 MegaByte (MB) = 106 bytes 1 GigaByte (GB) = 109 bytes 19 Codifica binaria di oggetti In generale con n bit si possono codificare 2n oggetti Ad esempio se si vogliono codificare i 7 giorni della settimana si possono usare n=3 bit (23 oggetti) e porre: 000 lunedì; 001 martedì 010 mercoledì; 100 giovedì 011 venerdì; 101 sabato; 110 domenica 20 Codifica binaria di oggetti In generale se si ha il problema di rappresentare N oggetti, si deve selezionare un numero n di bit tale che: 2n >= N 21 Codifica binaria di caratteri I caratteri da codificare sono: Lettere maiuscole e minuscole A-Z a a-z Cifre numeriche 0-9 Simboli di punteggiatura , . ; : ! ? etc. Simboli matematici + - / * etc. Altri caratteri 22 Codifica binaria dei caratteri (codice ASCII) US-ASCII (American Standard Code for Information Interchange) E’ un sistema a 7 bit e codifica 128 caratteri tramite gli interi da 0 a 127: da 48 a 57 cifre numeriche da 65 a 90 lettere maiuscole da 97 a 122 lettere minuscole Da Wikipedia: http://it.wikipedia.org/wiki/ASCII 23 Codifica binaria dei caratteri (codice ASCII) High ASCII E’ un sistema a 8 bit (256 caratteri) ed estende US-ASCII per: caratteri speciali non inclusi in US-ASCII lingue straniere (orientali e slave) Da Wikipedia: http://it.wikipedia.org/wiki/ASCII 24 Codifica binaria dei caratteri (codice UNICODE) UNICODE E’ un sistema a 16 bit e codifica 65536 caratteri e comprende: quasi tutti i sistemi di scrittura attualmente utilizzati glifi appartenenti a molte lingue morte simboli matematici simboli musicali Da Wikipedia: http://it.wikipedia.org/wiki/Unicode 25