Corso di Informatica (Programmazione) Lezione 2 (10 ottobre 2008) Codifica binaria degli interi con segno in Complemento a 1 Codifica binaria degli interi con segno in Complemento a 2 Somma algebrica in Complemento a 2 Codifica dei caratteri 1 Codifica binaria degli interi con segno Codifica in “Complemento a 1” n bit La sequenza dei bit del modulo è: - quella che fornisce il modulo dell’intero da rappresentare se l’intero è positivo - il complemento della sequenza che fornisce il modulo dell’intero da rappresentare se l’intero è negativo 2 Codifica binaria degli interi con segno Esempio: codifica in “Complemento a 1” (n=8 bit) 0 0 0 0 0 1 0 1 +5 1 1 1 1 1 0 1 0 -5 La negazione di un numero si ottiene complementando bit del segno e bit del modulo Il complemento di una sequenza di bit è la sequenza che si ottiene sostituendo 0 con 1 e 1 con 0 3 Codifica binaria degli interi con segno Intervallo di rappresentazione della codifica in “Complemento a 1” n bit Gli interi con segno rappresentabili in “Complemento a 1” vanno da (-2n-1+1) a (2n-1-1). Ad esempio per n=8 bit l’intervallo va da -127 a 127. 4 Codifica binaria degli interi con segno Vantaggi della codifica in “Complemento a 1” - semplice implementazione della somma (valgono le regole viste in precedenza) - la sottrazione viene trattata come la somma Svantaggio della codifica in “Complemento a 1” - doppia rappresentazione dello 0 (1|11…11 e 0|00…00) 5 Codifica binaria degli interi con segno Esempio: codifica in “Complemento a 1” (n=8 bit) 0 1 0 1 0 1 0 1 dal momento che l’intero codificato è positivo (bit del segno a 0), per trovare il modulo basta eseguire la somma di potenze relative al bit del modulo: 1 x 20 + 1 x 22 + 1 x 24 + 1 x 26 = 85 +85 6 Codifica binaria degli interi con segno Esempio: codifica in “Complemento a 1” (n=8 bit) 1 1 0 1 0 1 0 1 dal momento che l’intero codificato è negativo (bit del segno a 1), per trovare il modulo, prima di eseguire la somma di potenze, i bit del modulo vanno complementati 0 1 0 1 0 1 0 1 x 21 + 1 x 23 + 1 x 25 = 42 -42 7 Codifica binaria degli interi con segno Codifica in “Complemento a 2” n bit La sequenza dei bit del modulo è: - quella che fornisce il modulo dell’intero da rappresentare se l’intero è positivo - il complemento della sequenza che fornisce il modulo dell’intero da rappresentare se l’intero è negativo, con l’aggiunta di 1 8 Codifica binaria degli interi con segno Esempio: codifica in “Complemento a 2” (n=8 bit) 0 0 0 0 0 1 0 1 +5 La negazione di un numero si ottiene complementando bit del segno e bit del modulo e aggiungendo 1 al modulo 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 1 +1 1 1 1 1 1 0 1 1 -5 9 Codifica binaria degli interi con segno Intervallo di rappresentazione della codifica in “Complemento a 2” n bit Gli interi con segno rappresentabili in “Complemento a 2” vanno da (-2n-1) a (2n-1-1). Ad esempio per n=8 bit l’intervallo va da -128 a 127. 10 Codifica binaria degli interi con segno Vantaggi della codifica in “Complemento a 2” - semplice implementazione della somma (valgono le regole viste in precedenza) - la sottrazione viene trattata come la somma - singola rappresentazione dello 0 (0|00…00); la sequenza 1|00…00 in “Complemento a 2” rappresenta infatti l’intero -2n-1 11 Codifica binaria degli interi con segno Esempio: codifica in “Complemento a 2” (n=8 bit) 0 1 0 1 0 1 0 1 dal momento che l’intero codificato è positivo (bit del segno a 0), per trovare il modulo basta eseguire la somma di potenze relative al bit del modulo: 1 x 20 + 1 x 22 + 1 x 24 + 1 x 26 = 85 +85 12 Codifica binaria degli interi con segno Esempio: codifica in “Complemento a 2” (n=8 bit) 1 1 0 1 0 1 0 1 dal momento che l’intero codificato è negativo (bit del segno a 1), per trovare il modulo, prima di eseguire la somma di potenze, i bit del modulo vanno complementati ( 0 1 0 1 0 1 0). Poi si aggiunge 1 1 x 21 + 1 x 23 + 1 x 25 = 42 43 -43 13 Somma algebrica in “Complemento a 2” Per eseguire la somma tra due interi in “Complemento a 2” con n bit si esegue la somma bit a bit dei due numeri ignorando sempre l’eventuale riporto che cade oltre il bit più significativo 14 Codifica binaria degli interi senza segno Esempio: somma di interi in “Complemento a 2” con 4 bit intervallo di rappresentazione [-8, +7] 1 0 0 1 0 0 1 0 1 0 1 1 -7 +2 -5 Somma senza riporto risultato corretto 15 Codifica binaria degli interi senza segno Esempio: somma di interi in “Complemento a 2” con 4 bit intervallo di rappresentazione [-8, +7] 1 0 1 1 1 1 1 1 0 0 1 0 1 +7 -2 +5 Somma con riporto risultato corretto 16 Codifica binaria degli interi senza segno Esempio: somma di interi in “Complemento a 2” con 4 bit intervallo di rappresentazione [-8, +7] 0 1 1 1 0 0 1 0 1 0 0 1 +7 +2 +9 Somma senza riporto risultato errato 17 Codifica binaria degli interi senza segno Esempio: somma di interi in “Complemento a 2” con 4 bit intervallo di rappresentazione [-8, +7] 1 1 0 0 1 1 1 1 0 0 1 1 1 -7 -2 -9 Somma con riporto risultato errato 18 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 19 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 20 Codifica binaria dei 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 21 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 22 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 23 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 24