Sei sulla pagina 1di 37

Architettura degli Elaboratori

Esercitazioni su rappresentazione
dei numeri e aritmetica dei calcolatori

Materiale didattico per gli studenti del corso

A cura di Marta Simeoni e Salvatore Orlando

Architettura degli Elaboratori 1


Interi unsigned in base 2
Si utilizza un alfabeto binario A = {0,1}, dove 0 corrisponde al
numero zero, e 1 corrisponde al numero uno

dn-1...d1d0 con di di Î {0,1}

Qual è il valore rappresentato ? N = dn-1• 2n-1 + .... + d1• 21 + d0• 20

Quanti e quali numeri sono rappresentabili su n bit?


00….00 = 0
00….01 = 1 Con sequenze di n bit
00….10 = 2 sono rappresentabili
… 2n numeri naturali
01….11 = 2n-1- 1 (da 0 a 2n-1)
10….00 = 2n-1

11….11 = 2n - 1
100….00 = 2n

Architettura degli Elaboratori 2


Interi unsigned in base 2
I seguenti numeri naturali sono rappresentabili usando il numero di
bit specificato ?
Ricorda che:

2010 su 5 bit ? SI 20 = 1
6410 su 6 bit ? NO 21 = 2
50010 su 9 bit ? SI 22 = 4
102510 su 10 bit ? NO 23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
29 = 512
210 = 1024
....

Architettura degli Elaboratori 3


Conversione binario-decimale

Esercizio: 11101012 = ???10

1·26 + 1·25 + 1·24 + 0·23 + 1·22 + 0·21 + 1·20 =

64 + 32 + 16 + 0 + 4 + 0 + 1

Soluzione: 11101012 = 11710

Architettura degli Elaboratori 4


Conversione decimale-binario
Esercizio: 10010 = ???2

100 : 2 = 50 resto 0
50 : 2 = 25 resto 0
25 : 2 = 12 resto 1
12 : 2 = 6 resto 0
6:2=3 resto 0
3:2=1 resto 1
1:2=0 resto 1

Soluzione: 10010 = 11001002

Architettura degli Elaboratori 5


Conversione dec-bin: metodo più pratico
Scriviamo direttamente il numero decimale come somma di
potenze di 2. Per far questo, sottraiamo via via le potenze di 2, a
partire dalle più significative.
Ricorda che:
Esercizio: 12310 = ???2
20 = 1
123 - 64 = 59 ==> 26 21 = 2
59 - 32 = 27 ==> 25 22 = 4
27 - 16 = 11 ==> 24 23 = 8
11 - 8 = 3 ==> 23 24 = 16
25 = 32
3 - 2=1 ==> 21
26 = 64
1 - 1=0 ==> 20
27 = 128
28 = 256
Allora 12310 = 26 + 25 + 24 + 23 + 21 + 20 29 = 512
210 = 1024
Soluzione: 12310 = 11110112 ....

Architettura degli Elaboratori 6


Conversione binario-ottale e viceversa

Esercizio: 101011112 = ???8

10 101 111
Soluzione: 101011112 = 2578
2 5 7

Esercizio: 6358 = ???2

6 3 5
Soluzione: 6358 = 1100111018
110 011 101

Architettura degli Elaboratori 7


Base 16
Quali dei seguenti numeri esadecimali sono numeri sono
corretti?

BED
CAR
938
DEAD
BEBE
A129
ACI
DECADE
BAG
DAD
4H3

Architettura degli Elaboratori 8


Conversione binario-esadecimale e viceversa
Esercizio: 1011111011012 = ???16 Ricorda che:

1011 1110 1101 110 = 116 = 00012


210 = 216 = 00102
B E D ......
910 = 916 = 10012
Soluzione: 1011111011012 = BED16 = 305310 1010 = A16 = 10102
1110 = B16 = 10112
Esercizio: A3C916 = ???2 1210 = C16 = 11002
1310 = D16 = 11012
A 3 C 9 1410 = E16 = 11102
1510 = F16 = 11112
1010 0011 1100 1001

Soluzione: A3C916 = 10100011110010012 = 4192910

Architettura degli Elaboratori 9


Interi signed in complemento a 2
Come si riconosce un numero positivo da uno negativo?
– Positivo Þ bit più significativo 0
– Negativo Þ bit più significativo 1

Su n bit sono rappresentabili 2n interi unsigned (da 0 a 2n-1)


Sempre su n bit, quanti interi signed in complemento a 2 ?

0.......00 = 0
0.......01 =1 in totale sempre
... 2n numeri
01......11 = 2n-1-1 (massimo pos.)
10......00 = -2n-1 (minimo neg.)
...
11......11 = -1

Architettura degli Elaboratori 10


Interi signed in complemento a 2
Dato N>0, il numero -N si rappresenta su n bit con il numero
unsigned 2n - N

-1 Þ 2n - 1 (1........1)
- 2n-1 Þ 2n - 2n-1 = 2n-1 (10......0)

Esempio su 5 bit: rappresentare N = -15

N = 25 – 15 = 32 -15 = 17 = 10001

Data la rappresentazione di un numero negativo in complemento a


due su n bit, il valore corrispondente si determina assegnando
- peso negativo al bit di segno (-2n-1)
- peso positivo a tutti gli altri bit

Esempio su 5 bit:
10011 = -24 + 21 + 20 = -13
Architettura degli Elaboratori 11
Complemento a 2: cambio di segno
Esercizio: Rappresentare -3510 in complemento a 2 su 8 bit

001000112 = +3510
Complemento a uno

11011100 +
1 =
------------
11011101

Soluzione: -3510 = 110111012

Architettura degli Elaboratori 12


Complemento a 2: cambio di segno
Esercizio: Rappresentare -35 in complemento a 2 su 8 bit

001000112 = +3510
Inverti (complementa a 1) tutti i bit a
sinistra del bit “1” meno significativo
110111012

Architettura degli Elaboratori 13


Complemento a 2: cambio di segno
Esercizio: Quale numero decimale rappresenta il seguente numero
binario in complemento a due?

1111 1111 1111 1111 1111 1110 0000 11002

0000 0000 0000 0000 0000 0001 1111 01002 =

22 + 24 + 25 + 26 + 27 + 28 = 50010

Soluzione: il numero è -50010

Architettura degli Elaboratori 14


Complemento a 2: somma e sottrazione
Esercizio: eseguire 5310 - 3510 in complemento a due su 8 bit

3510 = 001000112 opposto: - 3510 = 110111012

11111101
5310 - 5310 + 001101012 +
3510 = (-35)10 = 110111012 =
_______ Þ _________ Þ________
1810 1810 (1000100102) mod 28

000100102 = 1810

Architettura degli Elaboratori 15


Complemento a 2: somma e sottrazione
Esercizio: eseguire 1510 - 3810 in complemento a due su 8 bit

3810 = 001001102 opposto: - 3810 = 110110102

00011110
1510 - 1510 + 000011112 +
3810 = (-38)10 = 110110102 =
_______ Þ _________ Þ________
-2310 -2310 (0111010012) mod 28

000101112 = 2310

Architettura degli Elaboratori 16


Complemento a due: Overflow
In quali dei seguenti casi si può ottenere overflow?

– somma di due numeri con segno concorde? SI


– somma di due numeri con segno discorde? NO
– sottrazione di due numeri con segno concorde? NO
– sottrazione di due numeri con segno discorde? SI

Architettura degli Elaboratori 17


Complemento a due: come scoprire l’overflow
Primo caso:
somma algebrica di due numeri positivi A e B. Si ha overflow se
A+B>=2n-1, ovvero se A+B non può essere rappresentata su n bit
in complemento a due.
Esempi:
A=01111 B=00001 (OVERFLOW Þ due ultimi riporti discordi)
A=01100 B=00001 (NON OVERFLOW Þ due ultimi riporti
concordi)

01 00
01111+ 01100+
00001= 00001=
10000 01101

Architettura degli Elaboratori 18


Complemento a due: come scoprire l’overflow
Secondo caso:
somma algebrica di due numeri negativi A e B. Si ha overflow se
|A|+|B|>2n-1, ovvero se |A|+|B| non può essere rappresentata su n
bit in complemento a due.

Esempi:
A=10100 B=10101 (OVERFLOW Þ due ultimi riporti discordi)
A=10111 B=11101 (NON OVERFLOW Þ due ultimi riporti concordi)
10 11
10100+ 10111+
10101= 11101=
01001 10100

Architettura degli Elaboratori 19


Esercizio
Considerate i numeri esadecimali x1 = 7A x2 = 13 x3 = FF
x4 = C1 x5 = 84

Scrivere i cinque numeri in codice binario a 8 bit


x1 = 0111 1010 x2 = 0001 0011 x3 = 1111 1111

x4 = 1100 0001 x5 = 1000 0100

Interpretare il codice binario in complemento a due ed eseguire le


operazioni
x1 - x2 ; x3 + x4 ; x4 + x5 ; x4 - x1
11111000
x1 01111010 +
-x2 11101101 =
_____________
(101100111) mod 28 = 01100111 overflow?
Architettura degli Elaboratori 20
Esercizio (continua)
11111111
x3 11111111 +
x4 11000001 =
___________
(111000000) mod 28 = 11000000 overflow?

10000000
x4 11000001 +
x5 10000100 =
___________
(101000101) mod 28 = 01000101 overflow?

10000000
x4 11000001 +
-x1 10000110 =
___________
(101000111) mod 28 = 01000111 overflow?
Architettura degli Elaboratori 21
Esercizio - caso particolare
Si ricorda che l’opposto del numero negativo più piccolo su n bit non può
essere rappresentato in complemento a due
– codifica non simmetrica

Supponiamo quindi:
– di lavorare con rappresentazioni in complemento a due su 3 bit
– di dover effettuare la sottrazione x-y
dove y=1002 è il minimo numero rappresentabile (y=-410)

Esercizio: calcolare x-y usando il solito algoritmo, dove x=0012


000
X 001 + Il complemento a due
-Y 100 non ha effetto
______
(0101) mod 23 = 101 OVERFLOW, anche se
riporti concordi !!
Abbiamo infatti sottratto un numero negativo da un numero >= 0
Þ il segno atteso è positivo
Architettura degli Elaboratori 22
Esercizio - caso particolare (continua)
Esercizio: calcolare x-y, dove x=1112
– poiché x=1112 allora x = -110
– non dovremmo avere overflow, poiché vogliamo effettuare la
somma algebrica di due numeri con segno discorde
– il risultato da ottenere è x-y=-110- (-410) = 310

100 Il complemento a due


non ha effetto
X 111 +
-Y 100 corretto
______
(1011) mod 23 = 011 = 310 NO OVERFLOW , anche
se riporti discordi !!

Abbiamo infatti sottratto un numero negativo da un numero


negativo Þ in questo caso non si può verificare overflow

Architettura degli Elaboratori 23


Procedura generale per determinare
l’OVERFLOW
Alla luce dell’esempio precedente, guardare solo ai due ultimi riporti per
controllare l’OVERFLOW potrebbe quindi portare a risultati erronei

Segno 1o Segno 2o Segno


Operazione
operando operando atteso Solo in questi
casi si può
Somma + + + verificare un
Somma + - qualsiasi OVERFLOW.
Somma - + qualsiasi Possiamo
Somma - - - controllarlo
confrontando
Sottrazione + + qualsiasi il bit di segno del
Sottrazione + - + risultato con il
segno atteso.
Sottrazione - + -
Sottrazione - - qualsiasi

Architettura degli Elaboratori 24


Numeri con la virgola (virgola fissa)

Data una base B, si assegnano:


n cifre per rappresentare la parte intera
m cifre per rappresentare la parte frazionaria

In base B=2, abbiamo quindi m+n bit per parte intera e frazionazia

m n

Esempio:
dn-1...d1d0 . d-1...d-m

Qual è il numero rappresentato in base B?

N = dn-1• Bn-1 + .... + d1• B1 + d0• B0 + d-1• B-1 + ... + d-m• B-m

Architettura degli Elaboratori 25


Virgola fissa
Esercizio: 23.87510 = ???2
(usare la rappresentazione in virgola fissa con n=8, m=8)

Conversione parte intera: Conversione parte frazionaria:

23 : 2 = 11 resto 1 0.875 x 2 = 1.75 parte intera 1


11 : 2 = 5 resto 1 0.75 x 2 = 1.50 parte intera 1
5:2 =2 resto 1 0.50 x 2 = 1 parte intera 1
2:2 =1 resto 0
1:2 =0 resto 1

Soluzione: 23.87510 = 00010111.111000002

Architettura degli Elaboratori 26


Numeri con virgola mobile
Un numero reale R può essere scritto in base B come
R = ± m • Be
m = mantissa
e = esponente
B = base

Esempi con B = 10

– R1 = 3.1569 x 103
– R2 = - 2054.00035 x 10-6
– R3 = - 0.1635 x 102
– R4 = 0.0091 x 10-12

Notazione scientifica: m= 0 . d-1...d-k


Notazione scientifica normalizzata: m = d0 . d-1...d-k con d0 ¹ 0

Architettura degli Elaboratori 27


Numeri binari in virgola mobile
Rappresentando mantissa ed esponente in binario in notazione
scientifica normalizzata si ottengono numeri del tipo:
±1.xx…x • 2yy...y

Si osservi che:

Spostare la virgola (punto) a destra di n bit significa decrementare di n


l’esponente

es: 0.01 • 23 = 1.0 • 21


Infatti 1 • 2-2 • 23 = 1 • 21

Spostare la virgola (punto) a sinistra di n bit significa incrementare di n


l’esponente

es: 100.011 • 23 = 1.00011 • 25


Infatti (1• 22 + 1• 2-2 + 1• 2-3) • 23 = (1• 20 + 1• 2-4 + 1• 2-5) • 25
25 + 21 + 20 = 25 + 21 + 20
Architettura degli Elaboratori 28
Numeri FP
Esercizio: 1310 = ???2 FP

1310 = 11012 = 1101.02 • 20 = 1.101 • 23

Esercizio: 151.2510 = ???2 FP

15110 = 128 + 16 + 4 + 2 + 1 = 100101112

0.2510 x 2 = 0.5010 parte intera 0


0.5010 x 2 = 110 parte intera 1
0.2510 = 0.012

Quindi = 151.2510 = 10010111.012 = 1.0010111012 • 27

Architettura degli Elaboratori 29


Numeri FP
Una volta fissato il numero di bit totali per la rappresentazione dei numeri
razionali rimane da decidere:

- Quanti bit assegnare per la mantissa ?


(maggiore è il numero di bit e maggiore è l’accuratezza con cui
si riescono a rappresentare i numeri)

- Quanti bit assegnare per l’esponente ?


(aumentando i bit si aumenta l’intervallo dei numeri rappresentabili)

OVERFLOW: si ha quando l’esponente positivo è troppo grande


per poter essere rappresentato con il numero di bit
assegnato all’esponente

UNDERFLOW: si ha quando l’esponente negativo è troppo grande


(in valore assoluto) per poter essere rappresentato
con il numero di bit assegnato all’esponente

Architettura degli Elaboratori 30


Numeri FP in standard IEEE754
Standard IEEE754: Singola precisione (32 bit)

L’intervallo di valori (decimali) rappresentabili è ± ~10-44.85 -- ~1038.53

Standard IEEE754: Doppia precisione (64 bit)

L’intervallo di valori (decimali) rappresentabili è ± ~10-323.3 -- ~10308.3

Architettura degli Elaboratori 31


Standard IEEE754: Esempio
Esempio: scrivere -10. 62510 in notazione floating point, usando lo
standard IEEE754 in singola precisione

- 10.62510 = - (10 + 0.5 +0.125) = - (23 + 21 + 1/2 + 1/8) =


= - 1010. 1012 = - 1. 010101 • 23 =
= (-1)1 • (1 + 0.010101) • 23

Aggiungendo all’esponente la polarizzazione il numero diventa:


(-1)1 • (1 + 0.010101) • 2(3+127)

Architettura degli Elaboratori 32


Standard IEEE754: Esempio
Esempio: Quale numero decimale rappresenta la seguente
sequenza di bit, letta secondo lo standard IEEE754?

esponente: 100011012 = 128+8+4+1=14110


mantissa: 1+0.100112 = 1 + 0.5 + 0.0625 + 0.03125 = 1.5937510
Quindi il numero è: 1.5937510 • 2(141 - 127) = 1.5937510 • 214
oppure:
1,10011 * 214 = 110011000000000 = 16384+8192+1024+512 = 26112

Architettura degli Elaboratori 33


Somma di numeri FP

Shift

Somma

Normalizzazione

Arrotondamento

Architettura degli Elaboratori 34


Somma di numeri FP con standard IEEE754
Esercizio: Dati i due numeri esadecimali A=C3160000 e B=42F80000
1. tradurre i numeri in binario
2. interpretare le sequenze di bit ottenute come numeri FP espressi
secondo lo standard IEEE754 in singola precisione
3. eseguirne poi la somma specificando tutti i passaggi
4. rappresentare il risultato ottenuto in esadecimale

Soluzione:
1. Traduzione in binario
A = 1100 0011 0001 0110 0000 0000 0000 0000
B = 0100 0010 1111 1000 0000 0000 0000 0000
2. Interpretazione di A e B come numeri FP:
A = 1 10000110 00101100000000000000000
B = 0 10000101 11110000000000000000000
cioè:
A = (-1)1 • 1.001011 • 210000110 = (-1)1 • 1.001011 • 201111111 + 111
B = (-1)0 • 1.1111 • 210000101 = (-1)0 1.1111 201111111 + 110

Architettura degli Elaboratori 35


Somma di numeri FP con standard IEEE754
3. Somma
§ l’esponente di A è 27 mentre quello di B è 26. Allineando B si ottiene:
A = 1.001011 B = 0.111110
§ le mantisse di A e B sono rappresentate in valore assoluto. Aggiungo un
bit per rappresentare il segno positivo. A però è negativo e quindi trovo il
suo opposto usando uno degli algoritmi di cambio segno. B invece è
positivo e quindi è già rappresentato correttamente in complemento a due
A = 10.110101 B = 00.111110
§ somma delle mantisse

A = 10.110101 +
B = 00.111110
---------------------
C = 11.110011 è un numero negativo il cui valore assoluto è 0.001101

Architettura degli Elaboratori 36


Somma di numeri FP con standard IEEE754
§ arrotondamento non necessario

§ normalizzazione

C = (-1)1 • 0.001101 • 210000110 = (-1)1 • 1.101 • 201111111 + 100


e quindi
C = 1 10000011 10100000000000000000000
= 1100 0001 1101 0000 0000 0000 0000 0000
4. Rappresentazione di C in esadecimale
C = C1D00000

Architettura degli Elaboratori 37

Potrebbero piacerti anche