Codifica binaria: - numeri naturali - Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin
Tipologie di codici Per la rappresentazione di: caratteri alfabetici e testi valori logici numeri naturali numeri interi relativi [val assoluto e segno, complemento a due] numeri reali [virgola fissa e virgola mobile] suoni, immagini e sequenze video Codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Informatica e Programmazione Università di Brescia 2
Codifica di numeri naturali QUALI?. 7 6 5 4 3 2 1 0 COME? n bit: 2 n combinazioni 00000000 00000001 00000010. 11111110 11111111 Elementi di Informatica e Programmazione Università di Brescia 3
Codifica di numeri naturali I numeri naturali si rappresentano normalmente, ma con n cifre binarie possiamo rappresentare solo i numeri da 0 a N max Esempio: con 8 cifre (n=8) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 127 1 1 1 1 1 1 1 1 N max = 255 Elementi di Informatica e Programmazione Università di Brescia 4
Nota Quanto vale il numero binario 111 1 n cifre? Elementi di Informatica e Programmazione Università di Brescia 5
Nota Quanto vale il numero binario 111 1 n cifre? Notare che 111 1 + 1 = 1 000 0 Elementi di Informatica e Programmazione Università di Brescia 6
Nota Quanto vale il numero binario 111 1 n cifre? Notare che 111 1 + 1 = 1 000 0 2 n Quindi 111 1 n cifre vale 2 n -1 Elementi di Informatica e Programmazione Università di Brescia 7
Quindi Con n cifre binarie si possono rappresentare i numeri da 0 a 2 n -1 Esempio precedente n = 8 1 1 1 1 1 1 1 1 N max = 2 n -1 = 256-1 =255 Elementi di Informatica e Programmazione Università di Brescia 8
Viceversa Voglio rappresentare i numeri naturali da 0 a N. Di quante cifre binarie ho bisogno? Esempio Voglio rappresentare numeri da 0 a 350 con n = 7 N max = 127 con n = 8 N max = 255 con n = 9 N max = 511 n = 9 Elementi di Informatica e Programmazione Università di Brescia 9
In generale Per poter rappresentare numeri naturali fino a N ³ 0, serve un numero di cifre n tali che: N max ³ N ovvero (2 n 1) ³ N Quindi deve essere Esempio precedente N = 350 n ³ log 2 (N + 1), ovvero n min = élog 2 (N + 1)ù n log 2 (351) = 8,. quindi n 9 Elementi di Informatica e Programmazione Università di Brescia 10
ARITMETICA BINARIA CON CODIFICA DI NUMERI NATURALI: OPERAZIONE DI ADDIZIONE Si ha traboccamento (overflow) quando c è un riporto dal bit più significativo che non può essere rappresentato con le cifre a disposizione. 1 1 1 0 + 14 0 0 1 0 = 2 (1) 0 0 0 0 0? Elementi di Informatica e Programmazione Università di Brescia 11
Hardware per effettuare la somma all interno del processore c n-1 c n-2 c 1 c 0 r n + r n-1 + r n-2 r 2 r 1 + + r 0 =0 a n-1 b n-1 a n-2 b n-2 a 1 b 1 a 0 b 0 a n-1 a 0 : primo operando b n-1 b 0 : secondo operando c n-1 c 0 : risultato r n = 0: NO OVERFLOW, r n =1: OVERFLOW Elementi di Informatica e Programmazione Università di Brescia 12
ARITMETICA IN MODULO 2 n Esempi (caso n=8) Rappresentazione geometrica 255 + 1 = 0 255 + 2 = 1 1 1 1 1 1 1 1 1 + 0 0 0 0 0 0 0 1 = 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 + 0 0 0 0 0 0 1 0 = 1 0 0 0 0 0 0 0 1 00000010 00000001 +127 01111111 + 128 + 129 11111110 00000000 10000000 11111111 10000001 +2 +1 0 +255 +254 Elementi di Informatica e Programmazione Università di Brescia 13
Caso n= 8: trascurando il riporto dalla cifra più significativa si ottiene il risultato modulo 256 [RISULTATO % 256] con n generico Trascurare il riporto dalla cifra più significativa = ottenere il risultato modulo 2 n = RISULTATO % 2 n = = RISULTATO % (MAX_RAPPRESENTABILE + 1) In alcuni contesti (cf. variabili intere unsigned del linguaggio C) si usa questa aritmetica (anche per la moltiplicazione) Elementi di Informatica e Programmazione Università di Brescia 14