new somma di numeri binarizandron/infogen/lucidi/04rappr.pdf · 2008. 2. 29. · fondamenti di...
TRANSCRIPT
Fondamenti di Informatica: Codifica Binaria dell’Informazione 1
��
��
Somma di numeri binari
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10
Esempio:
10011011 +
00101011 =
11000110
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 2
��
��
Cifre necessarie per rappresentare numero
Sia dato un numero naturale � e una base � . Qual e’ il minimo numero di
cifre necessarie a rappresentare � in base � ?
Date � cifre in base � , posso distinguere tra ��� casi diversi.
Considerando valori numerici NATURALI, posso rappresentare tutti i valori
� tali che
� � � � �� � �Devo allora trovare un intero � � � tale che:
�� � �� � ��� � � �� � � ���
Il minimo numero di cifre e’: � � ��� �
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 3
��
��
Cifre necessarie per rappresentare numero
Come calcolo � � � ?
� � ��� � � � � .
Pertanto:
�� � �� � ��� ��� � � � � � �� � � ���
Segue che
� � �� �� �� � � � � (trunc = troncamento alla parte intera)
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 4
��
��
Esempi
1. Quanti bit sono necessari a rappresentare il valore 24062? � � �� �� � � �� � � �
trunc(14.55) = 14
Numero bit necessari: �� � �� � �
Infatti: �� �� �� �� � �� � � � �� �
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 5
��
��
Esempi
2. Quanti bit sono necessari a rappresentare il valore 65536?
� � � � � � � � ��
Numero bit necessari: �� � �� � �
Infatti: �� �� � � � �� , cioe’ posso rappresentare tutti i numeri compresi tra 0
e 65535!
3. Quanti bit sono necessari a rappresentare il valore 65535?
� � � � � � � � � � � � �
trunc(15.99)=15
Numero bit necessari: � � � �� ��
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 6
��
��
Rappresentare valori numerici nel calcolatore
RAM composta da celle
Ogni SOTTOCELLA contiene un bit (0 o 1)
DIMENSIONE DELLA CELLA (parola): numero di BIT che puo‘
contenere
DIMENSIONE DELLA CELLA e‘ fissata
Tipica dimensione delle parole: 8, 16, 32, 64 BIT
Come rappresento i valori numerici nel calcolatore?
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 7
��
��
Rappresentare valori numerici nel calcolatore
Supponiamo di avere celle da 8 bit = 1 byte
Che valori possiamo rappresentare?
��� � � �� Quindi: riusciamo a rappresentare tutti i numeri naturali da 0 a
255
PROBLEMI
1. Come memorizzo valori piu’ grandi di 255?
2. Come rappresento i numeri negativi?
3. Come rappresento i numeri reali?
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 8
��
��
Rappresentazione di interi
Per rappresentare valori maggiori di 255 e’ sufficiente accostare piu’ celle.
NB 1: Non accosto BIT, ma CELLE!
NB 2: accostamento e’ fatto via software, non hardware. Avendo calcolatori
a 8 bit, posso avere dati a 16 o 32 bit!
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 9
��
��
Rappresentazione di interi
Problema: Dato il massimo numero da rappresentare, quante celle mi
servono in un calcolatore a � bit (cioe’: con celle di dimensione � )?
Risposta:
1. Calcolo il numero di bit necessari a rappresentare il numero, come visto
in precedenza: chiamiamolo � � .
2. Effettuo la divisione intera tra � � e il numero di bit che compone una
cella: � � � � DIV �
3. Risultato � �� � � �
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 10
��
��
ESEMPIO
Si vogliono rappresentare tutti gli interi tra 0 e 10 miliardi:
� � � � � � � � � � � � � � � � � � � � � �Servono 34 BIT.
Usando celle da 8 BIT: � ��
� � � � � � . Avremo bisogno di 34 DIV 8 + 1 = 5
celle (5 BYTES).
Usando celle da 16 BIT: � ��
�� � � � � � � . Avremo bisogno di 34 DIV 16 + 1
= 3 celle.
Usando celle da 32 BIT: � ��
� � � � � �� � � . Avremo bisogno di 34 DIV 32 +
1 = 2 celle.
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 11
��
��
Rappresentazione di interi
Problema: rappresentare numeri positivi e negativi, con l’informazione
relativa al segno.
Vedremo due metodi:
1. Modulo e Segno: metodo intuitivo
2. Complemento a due: semplifica operazioni artimetiche sugli interi
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 12
��
��
Rappresentazione di interi in MODULO e SEGNO
Segno del valore puo‘ essere ‘+’ o ‘-’. Per memorizzare questa
informazione e’ sufficiente un singolo BIT.
BIT DI SEGNO: 0 = ’+’, 1 = ’-’ (per convenzione)
Avendo a disposizione � bit, uso � � � bit per il MODULO del numero e 1
bit (quello piu’ significativo) per il SEGNO.
Posso rappresentare tutti i valori � tali che
� �� �� � � � � � � � �� �� � � �NB: Zero positivo e zero negativo!
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 13
��
��
MODULO e SEGNO: Esempio
Supponiamo di utilizzare dati a 8 BIT.
Un BIT viene usato per il segno e 7 BIT per il modulo
��� � � ��
Possiamo rappresentare tutti gli interi tra -127 e 127
� � � �� �� � � � � � � � � �� � , � � � �� �� � � � � � � � � �� �
NOTA: � � � � � � � � �� � � � �� � , � � � � � � � � � � � � � �� �
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 14
��
��
Somma di due interi
Come sommo due interi in formato MODULO e SEGNO?
1. Confronto i BIT DI SEGNO dei numeri:
2. SE i BIT sono uguali
BIT DI SEGNO risultato = BIT di SEGNO dei 2 valori
ROUTINE DI SOMMA
3. SE i BIT sono differenti
Confronta i valori assoluti dei due numeri
BIT DI SEGNO risultato = BIT di SEGNO intero piu‘ grande
ROUTINE DI SOTTRAZIONE
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 15
��
��
Complemento a due
Scopo: semplificare operazioni aritmetiche su valori interi.
Metodo (supponiamo celle a � bit):
� Il BIT piu’ a sinistra e’ interpretato come BIT DI SEGNO
� La cifra contenuta nel BIT DI SEGNO e’ coefficiente della potenza
� �� �� �
� Le restanti cifre rappresentano i coefficienti delle restanti potenze di
due (da 0 a � � � ), nel modo usuale
Con � bit rappresento i valori � t.c.
��
�� ��� � � � �� �� � �
NOTA: vi e’ un solo valore 0!
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 16
��
��
ESEMPI
1.� � � �� �� � � � � � � � � � ��
�� � �� �� � � � �� �� � �� �� � � �� �� ��� �� �� � � �� �� �� �� �� � � ��
� � � � �� ��� SOMMA DI POSITIVI� � � � � � � � � �
2. � � � �� �� � � � � � � � � � ��
�� � �� �� � � � �� �� � �� �� � � �� �� ��� �� �� � � �� �� �� �� �� � � ��
� � � � �� ��� SOMMA DI POSITIVI� � � �� � � �
NB: non compare il valore 109!
3. �� �� � � � � � � � � � ��
4. � � � � � � � � � �� � � � � �� � � � � � � �� � �
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 17
��
��
Complemento a due
I numeri positivi sono rappresentati come nella rappresentazione in modulo
e segno
I numeri negativi sono rappresentati in modo che i 7 BIT a destra del BIT
DI SEGNO rappresentano il COMPLEMENTO A 2 del numero considerato
�� � valore assoluto del numero
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 18
��
��
Complemento a due
Il complemento a due di un numero intero negativo � si ottiene nel modo
seguente:
� Si calcola il valore binario del modulo (valore assoluto) di �
� Si COMPLEMENTANO i bit del modulo N del numero: ogni 1 e’
convertito in 0 e viceversa
� Si somma 1 al risultato ottenuto
� Si pone a 1 il bit si segno
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 19
��
��
ESEMPIO - Complemento a due
Rappresentare il valore -78 in complemento a due.
� Valore assoluto in binario= 78 = 1001110
� Bit complementati: 0110001
� Sommare 1 al risultato ottenuto: 0110010
� Porre a 1 il bit si segno: 1 0110010
Verifica: � �� � � � � � � � � � � � � � � � � � ��� � � � � � � � � �� � � � � ��
� � �� � � � � � � �� � � � � � � � � � � � �� � � � � � ��
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 20
��
��
Complemento a due vs. modulo e segno
Intero M&S Comp. 2
-4 - 1 00
-3 1 11 1 01
-2 1 10 1 10
-1 1 01 1 11
-0 1 00 -
+0 0 00 0 00
+1 0 01 0 01
+2 0 10 0 10
+3 0 11 0 11
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 21
��
��
Somma e sottrazione in complemento a due
Vantaggi:
1. Non c’e’ differenza tra sommare positivi e negativi!
2. Sottrazione puo’ essere convertita in somma!
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 22
��
��
Esempi
Somma di positivi: � � � � � �
� � � � � � � ��
� � � � � � � � �
� � � � � � � � � � �
Somma di negativi: � � � � � � �� ��
� � � � � � � ��
� � � � � � � � �
� � � � � � � �� � � � � � � � �� � � �
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 23
��
��
Somma e sottrazione in complemento a due
Somma di positivo e negativo
� � � �� ��
� � � � � � � ��
� � � � � � � ��
� � � � � � � � � � � CARRY=1
� � � � � ��
� � � � � � � ��
� � � � � � � ��
� � � � � � � � � � � �
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 24
��
��
Overflow
Si puo’ verificare solo se i due operandi hanno lo stesso segno
� � � � � � � � �
� � � � � � � ��
� � � � � � � � �
� � � � � � � � � � �� CARRY=1
Segno risultato diverso da segno comune ai 2 operandi: OVERFLOW!
� � � � � � �
� � � � � � � ��
� � � � � � � � �
� � � � � � � � � � � �� CARRY=0
Segno risultato diverso da segno comune ai 2 operandi: OVERFLOW!
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 25
��
��
Rappresentazione Numeri Reali
Come e’ possibile rappresentare i numeri reali?
Problemi:
- Contenere spazio
- Approssimazione valori
- Coprire un ampio intervallo di valori
Alcuni numeri richiedono infinite cifre. Es:
- Il numero ‘e’, base del logaritmo naturale: e = 2.7182...
- � � � �� � � � � �
Rappresentazione Approssimata
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 26
��
��
Rappresentazione di reali in virgola fissa
Metodo piu’ semplice: affianchiamo un intero e un frazionario
Problema: Non disponiamo di un simbolo per rappresentare il PUNTO
DECIMALE
Soluzione: fissiamo a priori il numero di bit disponibili per la parte intera e
il numero di bit disponibili per la parte frazionaria
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 27
��
��
Esempio
Supponiamo di avere a disposizione 8 bit. Decidiamo di usare 5 bit per la
parte intera e 3 per la parte frazionaria:
XXXXX.XXX
Interpretato come intero:
� � � � � � � � �� � � �� � � � �� � � � �� � � �� �
Interpretato come reale (5-3): � � � � � � � � ��
�� � �� �� � � � � � � �� � � �� � �� � �� �� ��� � �� �� �� �� �� � � � � �� � �� �
NOTARE: Il valore reale e’ uguale all’intero diviso per � � (fattore che
dipende dalla posizione della virgola fissa):
� � �� � � � � � ��
� �
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 28
��
��
Virgola fissa - Svantaggi
Intervallo dei valori rappresentabili limitato
Problemi di approssimazione
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 29
��
��
Rappresentazione in virgola mobile
Anche detto FLOATING POINT
I valori sono rappresentati in notazione esponenziale:
� � � � ���
- � = parte frazionaria
- ��� = parte esponenziale
Esempio: �� � � � � � � � � � � � � � � � � � � � � � � � � � � � ��E’ sufficiente memorizzare, in una base � , i valori 24 e 21
La base � usata per memorizzare questi valori non e’ necessariamente
uguale alla base della notazione esponenziale � .
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 30
��
��
Rappresentazione in virgola mobile
VANTAGGI
- Range di valori rappresentati
- Distribuzione dei valori rappresentati consente approssimazione migliore
Provare a rappresentare in virgola fissa i valori � � � � � � � � � e � � � � � � � � � � !
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 31
��
��
Caratteristica e Mantissa
La CELLA DI MEMORIA e’ suddivisa in parti:
1. Parte frazionaria: MANTISSA
2. Esponente: CARATTERISTICA
3. BIT DI SEGNO per l’esponente
4. BIT DI SEGNO per la mantissa
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 32
��
��
Rappresentazione in virgola mobile - Esempi
Esempio 1:
Rappresentare il valore -123.45 in virgola mobile, usando �� � � � � � �
Soluzione: Dato che � � � � , scrivo � ed� in base 10
� � � � � � � � � � � � �
Bit segno mantissa = 1, Bit segno esponente = 0
� � � � � � � � � � � � �
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 33
��
��
Rappresentazione in virgola mobile - Esempi
Esempio 2:
A che valore decimale corrisponde il seguente valore in virgola mobile
( �� � � � � ):
� � � � � � � � � � � , Segno mantissa=1, Segno esponente=1
(notare che � e� sono in base 2, poiche’ � � � )?
Soluzione: � � � � ��� � � � �� � � � � �� � � � � �� �� � � �� � �� �
� � � � � �� �� �
� � � � �� � � � �� � � � � � � � � �� � � �� �
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 34
��
��
Rappresentazione in virgola mobile - Esempi
Esempio 3:
A che valore decimale corrisponde il seguente valore in virgola mobile
( �� � � � � � ):
� � � � � � � � � � , Segno mantissa=1, Segno esponente=1?
Soluzione: � � � � �� � �� �
�� � � �� �� �
� � � � �� � � � � � � � � � � � � � � �� � �� �
Notare che � e� sono dati in base 2 (� � � ) e che -3 e’ esponente di 10,
poiche’ �� � �
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 35
��
��
Rappresentazione di caratteri
L’utente inserisce dati tramite tastiera: numeri, lettere, simboli
Il calcolatore memorizza solo numeri binari.
Come memorizzo i caratteri?
TABELLA ASCII (American Standard Code for Information Interchange):
ad ogni valore numerico associo un carattere
Utilizza 8 bit: � � � � �� caratteri diversi
Eventuale utilizzo del bit di parita’
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 36
��
��
Memorizzazione di caratteri
Tipi di carattere contenuti nella tabella ASCII:
� Caratteri alfanumerici
– Cifre ”0”, ..., ”9”
– Lettere maiuscole ”A”, ...,”Z” e minuscole ”a”, ...,”z”
� Segni: caratteri di punteggiatura, operatori aritmetici, ecc.
� Caratteri di comando: Carriage Return, Line Feed, Form Feed, ecc.
Universita’ degli Studi di Milano-Bicocca
Fondamenti di Informatica: Codifica Binaria dell’Informazione 37
��
��
Memorizzazione immagini
Come memorizzo un’immagine in un calcolatore?
DIGITALIZZAZIONE
L’immagine e‘ suddivisa in punti: PIXEL
Ogni punto e‘ codificato con un numero che corrisponde a un particolare
colore. In generale, potenze di 2!
Informazioni necessarie per codificare l’immagine:
1. Dimensioni (es. 640x480, 1024x768, ecc.)
2. Risoluzione (misurata in dpi : dot per inch)
3. Numero di colori (o sfumature)
Universita’ degli Studi di Milano-Bicocca