Sei sulla pagina 1di 32

ESERCIZI SU

RAPPRESENTAZIONE
DELL'INFORMAZIONE

1
Per le rappresentazioni in
complemento a n su k cifre, useremo
la notazione n,ck.

Ad esempio, (1001)2,c4
significa che 1001 e' un numero
rappresentato in base 2,
complemento a 2, su 4 cifre,
e che quindi corrisponde al numero
(-7)10, "meno sette [in base 10]".
Esercitazioni Informatica A, codifica dell’informazione 2
Esercizio

• Al mondo ci sono circa sei miliardi di persone.


Supponiamo di voler progettare un sistema che dia
un numero di serie ad ogni persona del pianeta...
Quanti bit deve essere lungo il numero di serie
perché ogni persona abbia un numero di serie
diverso?

Dare una risposta approssimata, ma corretta, e


giustificarla
(ALMENO n bit, perché...)

3
Risposta: ricordiamo che

10 bit -> 210 possibili numeri = un po’ più di 1.000 numeri di


serie
20 bit -> 220 possibili numeri = un po’ più di 1.000.000 di
numeri di serie
30 bit -> 230 possibili numeri = un po’ più di 1.000.000.000 di
numeri di serie
(ossia: kilo, mega e giga)

6.000.000.000 = 6 * 1.000.000.000.
- con 30 bit rappresento 230 = poco più di un miliardo
- con 3 bit rappresento 23 = 8 altre possibilità
- con 30 + 3=33 bit posso rappresentare 2^(30 + 3) = 230 * 8,
cioè 1.000.000.000 * 8.
Con 33 bit ho più di 8 miliardi di numeri, che sono più che
sufficienti. 4
ESERCIZIO

Supponiamo di avere una CPU a 8


bit, dove i numeri interi vengono
rappresentati in complemento a due;
è possibile effettuare le seguenti
operazioni matematiche? Se non è
possibile, perché?

3+2; 117+121; 540-23; 15-126;


250-125; 78-289; -25-121
5
Risposta: con 8 bit, in complemento a due, posso
rappresentare tutti gli interi tra -128 e +127, pertanto:

3+2=5 -> SI (sia gli operandi che il risultato sono


rappresentabili)
117+121=238 -> NO, per overflow (gli operandi sono
rappresentabili ma non il risultato)
540-23 -> NO, perché il primo operando non e'
rappresentabile
15-126=-111 -> SI
250-125 -> NO, perché il primo operando non e'
rappresentabile
78-289 -> NO, perché il secondo operando non è
rappresentabile
-25-121=-146 -> NO, per overflow
Esercitazioni Informatica A, codifica dell’informazione 6
Considerate le operazioni del punto
precedente che sono possibili;
convertite gli operandi in numeri
binari in complemento a due su 8 bit,

effettuate le operazioni e verificate


che i risultati corrispondano
riconvertendo i risultati in notazione
decimale.
Esercitazioni Informatica A, codifica dell’informazione 7
PRIMA (3+2=5):

(3)10 = (00000011)2
(2)10 = (00000010)2
(11)2 + (10)2 = (00000101)2
(101)2 = 20 + 22 = (5)10

SECONDA (15-126=111):

15 / 2 = 7 con resto 1
7/2=3 " 1
3/2=1 " 1
1/2=0 " 1

(15)10 = (00001111)2

Esercitazioni Informatica A, codifica dell’informazione 8


126 / 2 = 63 con resto 0
63 / 2 = 31 " 1
31 / 2 = 15 " 1
15 / 2 = 7 " 1
7/ 2 = 3 " 1
3/2= 1 " 1
1/2= 0 " 1

(126)10 = (01111110)2
Esercitazioni Informatica A, codifica dell’informazione 9
(126)10 = (01111110)2
(-126)10 = (10000001+1)2 = (10000010)2

00001111 +
10000010 =
10010001

(10010001)2 = 2^0 + 2^4 - 2^7 = (-111)10

Esercitazioni Informatica A, codifica dell’informazione 10


ESERCIZIO

Supponiamo di avere una macchina


a 10 bit: dire per ciascun numero di
quelli dati qui sotto, SENZA
convertirli in base 2, se la macchina
lo può rappresentare oppure se
servono più bit, e in ciascun caso
quale è il numero minimo necessario
di bit per rappresentare il numero.
(15)10; (726)10; (2543)10; (98)10
11
Risposta: a meno che l'esercizio non lo
dica esplicitamente, NON usiamo la
rappresentazione in complemento a due,
e pertanto con 10 bit possiamo
rappresentare tutti gli interi da 0 a 210 - 1,
ossia da 0 a 1023.
Quindi: (15)10; (726)10; (98)10:
10 bit sono sufficienti; (2543)10: 10 bit non
sono sufficienti, e nemmeno 11;
occorrono almeno 12 bit, con i quali
posso rappresentare i numeri
da 0 a 212 - 1 = 4095.
Esercitazioni Informatica A, codifica dell’informazione 12
Analogamente:
(15)10: 4 bit è il minimo numero
necessario di bit per rappresentarlo
(726)10: 10 bit è il minimo numero
necessario di bit per rappresentarlo
(98)10: 7 bit è il minimo numero
necessario di bit per rappresentarlo

Esercitazioni Informatica A, codifica dell’informazione 13


Convertire in base 2 i numeri
dell'esercizio precedente
rappresentabili con 10 bit o meno.

(15)10 = (1111)2

(questo dovreste saperlo a memoria)

Esercitazioni Informatica A, codifica dell’informazione 14


726/2 = 363 con resto 0
363/2 = 181 con resto 1
181/2 = 90 con resto 1
90/2 = 45 con resto 0
45/2 = 22 con resto 1
22/2 = 11 con resto 0
11/2 = 5 con resto 1
5/2 = 2 con resto 1
2/2 = 1 con resto 0
1/2 = 0 con resto 1
-> (726)10 = (1011010110)2
Esercitazioni Informatica A, codifica dell’informazione 15
98/2 = 49 con resto 0
49/2 = 24 con resto 1
24/2 = 12 con resto 0
12/2 = 6 con resto 0
6/2 = 3 con resto 0
3/2 = 1 con resto 1
1/2 = 0 con resto 1

-> (98)10 = (110 0010)2

Esercitazioni Informatica A, codifica dell’informazione 16


ESERCIZIO

Si consideri 2046. Dire che numero


rappresenta quando interpretato
come rappresentazione
in base 10 o in base 8.

Esercitazioni Informatica A, codifica dell’informazione 17


Risposta: Quando è interpretato
come rappresentazione in base 10,
ossia come (2046)10, ovviamente
rappresenta il numero
"duemilaquarantasei".
Quando e' in base 8, (2046)8
rappresenta il numero
6 + 4*8 + 2*83 = (1062)10,
"millesessantadue".
Esercitazioni Informatica A, codifica dell’informazione 18
ESERCIZIO

Le targhe di automobile in Italia sono


composte da 2 lettere, seguite da 3
cifre numeriche, seguite da altre 2
lettere. Sapendo che le lettere
dell'alfabeto sono 26, quante
automobili possono, al massimo,
circolare in Italia se ogni automobile
deve avere una targa diversa?
Esercitazioni Informatica A, codifica dell’informazione 19
Risposta: dobbiamo vedere quante targhe diverse
possono essere formate con 2 lettere + 3 cifre + 2
lettere. Il procedimento è identico a quello per
determinare quante stringhe di bit di lunghezza n
possiamo produrre, con la lieve differenza che in certe
posizioni ho 10 cifre possibili, in altre 26.
Spieghiamo meglio. Se le targhe fossero composte da 1
sola lettera, avrei solo 26 targhe diverse. Se fossero
composte da 2 lettere, avrei 26 * 26 = 262 targhe
diverse. Se fossero composte da 2 lettere e 1 cifra,
dovrei moltiplicare il numero precedente per 10, ossia:
10 * 262. Se fossero composte da 2 lettere e 2 cifre,
dovrei moltiplicare il risultato precedente per 10, ossia
10 * (10 * 262) = 102 * 262...
In sintesi: 4 lettere e 3 cifre:
264 * 103 possibili targhe diverse.
20
Che è il numero 456.976.000.
Esercizio di codifica

• Chiamiamo S0-4a-c l’insieme delle stringhe di


lunghezza compresa tra 0 e 4 e composte dai soli
caratteri ‘a’, ‘b’ e ‘c’. Quante sono le stringhe in S 0-4a-
c? Qual è il numero minimo di bit sufficiente a

codificare univocamente gli elementi di S 0-4a-c? Si


giustifichino le risposte.
Esempi di elementi di S0-4a-c sono le stringhe “a”,
“cccc”, “”, “ba”, “aab”, “ca”, “ccba”, “c”, ...
21
• Ragionando per enumerazione, c’è 1 sola
stringa di lunghezza 0 (la stringa vuota), 3
stringhe di lungh. 1 (“a”, “b”, “c”), 3x3=9
stringhe di lungh. 2 (“aa”, “ab”, “ac”, “ba”,
“bb”, “bc”, “ca”, “cb”, “cc”), 3x3x3=27
stringhe di lungh. 3 (“aaa”, “aab”, “aac”,
“aba”, … “ccc”), e 3x3x3x3=81 di lungh. 4
• L’insieme S0-4a-c si compone quindi di
1+3+9+27+81=121 elementi diversi, e per
codificarli in modo univoco occorrono 7 bit
(che mettono a disposizione 128 “codici”, di
cui sette non utilizzati).
22
Esercizio
• Si supponga che il numero 640.000 (seicentoquarantamila, in base 10) abbia nello
standard IEEE 754-1985 a precisione singola, la seguente rappresentazione
Segno: 0
Mantissa: 0011100010000000000000
Esponente: 10011100
• Si indichi, facendo sempre riferimento allo stesso standard e giustificando
brevemente la risposta, quale numero è codificato dalla seguente rappresentazione,
Segno: 0
Mantissa: 0011100010000000000000
Esponente: 10011101
• Inoltre, si dica qual è la rappresentazione del numero 40.000 (quarantamila, in base
10). Suggerimento: si consideri che 64=4·16=4·24=4· .
Soluzione
• 1.280.000 (il numero di partenza, moltiplicato per 2, dal momento
che l’esponente è aumentato di 1 e la mantissa è invariata)
Segno: 0
Mantissa: 0011100010000000000000
Esponente: 10011000
(40.000=640.000/16 e 16 = 24 = 222 quindi basta cambiare da 1 a 0 il
terzo bit da destra dell’esponente)
• Si noti che la rappresentazione del numero 640.000 non è quella
indicata nel testo dell’esercizio; si sono comunque valutate come
corrette anche le soluzioni degli studenti che hanno calcolato la
rappresentazione del numero 40.000 ex novo, senza partire da
quella ipotizzata per il numero 640.000.

24
Esercizio
• Con riferimento allo standard IEEE 754-1985 a precisione singola, si considerino i
due insiemi di numeri:
A = {numeri positivi con codifica in cui l’esponente è 10000110}
B = {numeri positivi con codifica in cui l’esponente è 10000100}
• Si risponda ai seguenti quesiti, motivando la risposta con semplici calcoli e
ragionamenti.
1. Si dimostri che tutti i numeri di A sono maggiori di tutti i numeri di B;
2. Si calcolino in modo preciso, anche se non obbligatoriamente esatto, i valori massimo e minimo
dell’insieme A e dell’insieme B;
3. Si indichi (ancora in modo preciso ma non necessariamente esatto) qual è la differenza massima e
minima tra un numero dell’insieme A e un numero dell’insieme B.

25
Soluzione
1. La variabilità dei numeri nei due insiemi A e B è determinata dalla mantissa per un fattore 2 (si va da
1.000...  1 a 1.111... 2) e per l’esponente per un fattore 4=22 (cambia il secondo bit da destra) quindi
prevale il secondo fattore (quello determinato dall’esponente) e tutti i numeri di A sono maggiori di
tutti i numeri di B. 
2. Si noti che 100001102=13410=12710+710 e che 100001002=13210=12710+510
I valori massimo e minimo dell’insieme A e dell’insieme B, denotati rispettivamente a max, amin, bmax e
bmin, sono quindi i seguenti (nei quali, a parità di esponente, si considera il valore massimo e minimo
codificabile dalla mantissa)
amax = 1,111111111111111111111112  27  28
amin = 1,000000000000000000000002  27 = 27
bmax = 1,111111111111111111111112  25  26
bmin = 1,000000000000000000000002  25 = 25
3. Si ha perciò
amax – bmin  28 – 25 = 256 - 32 = 224
amin – bmax  27 – 26 = 26 = 64

26
Esercizio
• Si indich il valore rappresentato dalle seguenti configurazioni di
bit, secondo lo standard IEEE 754-1985 a precisione singola (si
raccomanda di giustificare la risposta riportando i calcoli
effettuati; non è ncecessario fornire una risposta esatta, il valore
piuò essere indicato in forma approssimativa o simbolica).
Segno: 0
Mantissa: 00000000000000000000111
Esponente: 10011001
• Con un ragionamento il più possibile sintetico (da riportare) si
stabilisca di quanto differisce da tale valore il numero
immediatamente precedente rappresentabile nello stesso standard
(cioè il più grande numero minore di esso e rappresentabile nello
stesso standard). 27
Soluzione
• 10011001­2­= 15310 quindi
X = (-1)S  2E-K  1.F =
X = (-1)0  2153-127  1. 00000000000000000000111  226
• Il precedente valore rappresentabile è
Y = 226  1.00000000000000000000110
che ha lo stesso esponente e differisce solo per l’ultima cifra
della mantissa (quella meno significativa), La differenza tra
i due è pari a X-Y = 226  2-23 = 23 = 8.
28
Esercizio (variante del precedente)
• Si indichi il valore rappresentato dalle seguenti configurazioni di bit,
secondo lo standard IEEE 754-1985 a precisione singola (si
raccomanda di giustificare la risposta riportando i calcoli effettuati;
non è ncecessario fornire una risposta esatta, il valore piuò essere
indicato in forma approssimativa o simbolica).
Segno: 0
Mantissa: 11111111100000000000000
Esponente: 10011011
• Con un ragionamento il più possibile sintetico (da riportare) si
stabilisca di quanto differisce da tale valore il numero
immediatamente successivo rappresentabile nello stesso standard
(cioè il più piccolo numero maggiore di esso e rappresentabile nello
stesso standard).
29
Soluzione
• 10011011­2­= 15510 quindi
X = (-1)S  2E-K  1.F =
X = (-1)0  2155-127  1.11111111100000000000000 =
228  1.11111111100000000000000  229
• Il successivo valore rappresentabile è
Y = 228  1. 11111111100000000000001
che ha lo stesso esponente e differisce solo per l’ultima cifra della
mantissa (quella meno significativa), La differenza tra i due è pari a
Y-X = 228  2-23 = 25 = 32.

30
Esercizio
• I numeri di Mersenne sono degli interi positivi che possono
essere espressi nella forma 2n-1, per qualche intero n>0.
• Si indichi come vengono codificati i numeri di Mersenne
usando
a) la codifica binaria posizionale con n bit
b) la codifica in virgola mobile secondo lo standard IEEE 754-1985
in precisione doppia (si assuma in questo caso che il numero di
Marsenne in questione abbia un valore che rientri nell’insieme
dei valori codificabili da tale standard).

31
Soluzione
a) Il numero è codificato da una sequenza di n cifre binarie
“1”
b) Si ha 2n-1 => 111...11
(n bit uguali a 1) = 1.11...112n-1, quindi
S = 0 (segno positivo)
E = (codifica posizionale binaria del numero) 1023+n-1
M = 11...1100...00
(n-1 bit uguali a 1 seguiti da 52-(n-1) bit uguali a 0)
32