Corso di Informatica (Programmazione) Lezione 2 (10 ottobre 2008) Codifica binaria degli interi con segno in Complemento a 1 in Complemento a 2 Somma algebrica in Complemento a 2 Codifica dei caratteri
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
Codifica binaria degli interi con segno Esempio: codifica in “Complemento a 1” (n=8 bit) +5 1 -5 1 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
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.
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)
Codifica binaria degli interi con segno Esempio: codifica in “Complemento a 1” (n=8 bit) 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
Codifica binaria degli interi con segno Esempio: codifica in “Complemento a 1” (n=8 bit) 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
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
Codifica binaria degli interi con segno Esempio: codifica in “Complemento a 2” (n=8 bit) 1 +5 1 La negazione di un numero si ottiene complementando bit del segno e bit del modulo e aggiungendo 1 al modulo 1 +1 1 -5
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.
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
Codifica binaria degli interi con segno Esempio: codifica in “Complemento a 2” (n=8 bit) 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
Codifica binaria degli interi con segno Esempio: codifica in “Complemento a 2” (n=8 bit) 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
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
Codifica binaria degli interi senza segno Esempio: somma di interi in “Complemento a 2” con 4 bit intervallo di rappresentazione [-8, +7] 1 -7 1 +2 -5 Somma senza riporto risultato corretto
Codifica binaria degli interi senza segno Esempio: somma di interi in “Complemento a 2” con 4 bit intervallo di rappresentazione [-8, +7] 1 +7 1 -2 1 1 +5 Somma con riporto risultato corretto
Codifica binaria degli interi senza segno Esempio: somma di interi in “Complemento a 2” con 4 bit intervallo di rappresentazione [-8, +7] 1 +7 1 +2 1 +9 Somma senza riporto risultato errato
Codifica binaria degli interi senza segno Esempio: somma di interi in “Complemento a 2” con 4 bit intervallo di rappresentazione [-8, +7] 1 -7 1 -2 1 1 -9 Somma con riporto risultato errato
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
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
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
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
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
Codifica binaria dei caratteri (codice 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