Esercitazioni su rappresentazione dei numeri e aritmetica Interi

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
Esercitazioni su rappresentazione
dei numeri e aritmetica
N = dn-1• 2n-1 + .... + d1• 21 + d0• 20
•
Qual è il numero rappresentato ?
•
Quanti numeri sono rappresentabili su n bit?
00….00
00….01
00….10
…
01….11
10….00
…
11….11
100….00
Salvatore Orlando
&
Marta Simeoni
con di di ∈ {0,1}
= 0
= 1
= 2
= 2n- 3
= 2n- 2
Con sequenze di n bit
sono rappresentabili
2n numeri naturali
(da 0 a 2n-1)
= 2n - 1
= 2n
Arch. Elab. A - M. Simeoni 1
Interi unsigned in base 2
•
Arch. Elab. A - M. Simeoni 2
Conversione binario-decimale
I seguenti numeri naturali sono rappresentabili usando il numero di bit
specificato ?
• Esercizio: 11101012 = ???10
Ricorda che:
•
•
•
•
2010 su 5 bit ?
6410 su 6 bit ?
50010 su 9 bit ?
102510 su 10 bit ?
SI
NO
SI
NO
1·26 + 1·25 + 1·24 + 0·23 + 1·22 + 0·21 + 1·20 =
20 = 1
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
29 = 512
210 = 1024
....
64 + 32 + 16 + 0
+ 4
+ 0
+ 1
Soluzione: 11101012 = 11710
Arch. Elab. A - M. Simeoni 3
Arch. Elab. A - M. Simeoni 4
1
Conversione dec-bin: metodo più pratico
Conversione decimale-binario
•
•
• Esercizio: 10010 = ???2
100 : 2 = 50
50 : 2 = 25
25 : 2 = 12
12 : 2 = 6
6:2=3
3:2=1
1:2=0
resto 0
resto 0
resto 1
resto 0
resto 0
resto 1
resto 1
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
• Esercizio:
Ricorda che:
10310 = ???2
103 - 64 = 39
39 - 32 = 7
7 - 4=3
3 - 2=1
1 - 1=0
==>
==>
==>
==>
==>
26
25
22
21
20
Allora 10310 = 26 + 25 + 22 + 21 + 20
Soluzione: 10010 = 11001002
Soluzione: 10310 = 11001112
Arch. Elab. A - M. Simeoni 5
Arch. Elab. A - M. Simeoni 6
Conversione binario-ottale e viceversa
10 101 111
Soluzione: 101011112 = 2578
5
7
• Esercizio: 6358 = ???2
6
3
5
110 011 101
Base 16
• Quali dei seguenti numeri esadecimali sono numeri sono
corretti?
• Esercizio: 101011112 = ???8
2
20 = 1
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
29 = 512
210 = 1024
....
Soluzione: 6358 = 1100111018
Arch. Elab. A - M. Simeoni 7
BED
CAR
938
DEAD
BEBE
A129
ACI
DECADE
BAG
DAD
4H3
Arch. Elab. A - M. Simeoni 8
2
Conversione binario-esadecimale e viceversa
• Esercizio: 1011111011012 = ???16
1011
1110
1101
B
E
D
Soluzione: 1011111011012 = BED16 = 305310
• Esercizio: A3C916 = ???2
A
3
C
9
1010
0011
1100
1001
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 ?
Ricorda che:
110 = 116 = 00012
210 = 216 = 00102
......
910 = 916 = 10012
1010 = A16 = 10102
1110 = B16 = 10112
1210 = C16 = 11002
1310 = D16 = 11012
1410 = E16 = 11102
1510 = F16 = 11112
Soluzione: A3C916 = 10100011110010012 = 4192910
0.......00
0.......01
...
01......11
10......00
...
11......11
= 0
=1
= 2n-1-1 (massimo)
= 2n-1 (minimo)
- 2n-1 = 2n-1 - 2n
= 2n - 1
-1 = 2n - 1 - 2n
Dato N>0, il numero -N si rappresenta su n bit con il numero 2n - N
(1........1)
-1 ⇒ 2n - 1
- 2n-1 ⇒ 2n - 2n-1 = 2n-1 (10......0)
Arch. Elab. A - M. Simeoni 9
Arch. Elab. A - M. Simeoni 10
Complemento a 2
Complemento a 2
• Esercizio: Rappresentare -3510 in complemento a 2
• Esercizio: Rappresentare -35 in complemento a 2
001000112 = +3510
001000112 = +3510
Complemento a uno
11011100 +
1 =
-----------11011101
110111012
Inverti (complementa a 1) tutti i bit a
sinistra del bit “1” meno significativo
Soluzione: -3510 = 110111012
Arch. Elab. A - M. Simeoni 11
Arch. Elab. A - M. Simeoni 12
3
Complemento a 2
Complemento a 2: somma e sottrazione
• Esercizio: Quale numero decimale rappresenta il seguente
numero binario in complemento a due?
• Esercizio: eseguire 5310 - 3510 in complemento a due su 8 bit
3510 = 001000112
1111 1111 1111 1111 1111 1110 0000 11002
0000 0000 0000 0000 0000 0001 1111 01002 =
5310 3510 =
22 + 24 + 25 + 26 + 27 + 28 = 50010
_______
1810
Soluzione: il numero è -50010
⇒
complementando: - 3510 = 110111012
5310 +
(-35)10 =
_________
1810
11111101
001101012 +
110111012 =
⇒________
(1000100102) mod 28
000100102 = 1810
Arch. Elab. A - M. Simeoni 13
Arch. Elab. A - M. Simeoni 14
Complemento a 2: somma e sottrazione
• Esercizio: eseguire 1510 - 3810 in complemento a due su 8 bit
3810 = 001001102
1510 3810 =
_______
-2310
⇒
complementando: - 3810 = 110110102
1510 +
(-38)10 =
_________
-2310
00011110
000011112 +
110110102 =
Overflow
• In quali dei seguenti casi si può ottenere overflow?
–
–
–
–
somma di due numeri con segno concorde?
somma di due numeri con segno discorde?
sottrazione di due numeri con segno concorde?
sottrazione di due numeri con segno discorde?
SI
NO
NO
SI
⇒________
(0111010012) mod 28
000101112 = 2310
Arch. Elab. A - M. Simeoni 15
Arch. Elab. A - M. Simeoni 16
4
Esercizio
• Considerate i numeri esadecimali
•
Esercizio (continua)
x1 = 7A
x4 = C1
x2 = 13
x5 = 84
x3 = FF
11111111
x3 11111111 +
x4 11000001 =
___________
(111000000) mod 28 = 11000000
overflow?
x4 - x1
10000000
x4 11000001 +
x5 10000100 =
___________
(101000101) mod 28 = 01000101
overflow?
11111000
x1 01111010 +
-x2 11101101 =
_____________
(101100111) mod 28 = 01100111
10000000
x4 11000001 +
-x1 10000110 =
___________
(101000111) mod 28 = 01000111
overflow?
Scrivere i quattro 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;
overflow?
Arch. Elab. A - M. Simeoni 17
Esercizio - caso particolare
•
•
Esercizio - caso particolare (continua)
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)
Il complemento a due
non ha effetto
OVERFLOW, anche se
riporti concordi !!
Abbiamo infatti sottratto un numero negativo da un
⇒ il segno atteso è positivo
numero >= 0
• 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
X 111 +
-Y 100
______
(0011) mod 23 = 011 = 310
Esercizio: calcolare x-y usando il solito algoritmo, dove x=0012
000
X 001 +
-Y 100
______
(0101) mod 23 = 101
Arch. Elab. A - M. Simeoni 18
Il complemento a due
non ha effetto
corretto
NO OVERFLOW , anche
se riporti discordi !!
Abbiamo infatti sottratto un numero negativo da un
numero negativo => in questo caso non si può
verificare overflow
Arch. Elab. A - M. Simeoni 19
Arch. Elab. A - M. Simeoni 20
5
Procedura generale per determinare l’OVERFLOW
Numeri con la virgola (virgola fissa)
Alla luce dell’esempio precedente, guardare solo ai due ultimi
riporti per controllare l’OVERFLOW potrebbe quindi portare a risultati erronei
Operazione
Segno 1o
operando
Somma
Somma
Somma
Somma
Sottrazione
Sottrazione
Sottrazione
Sottrazione
Segno 2o
operando
Segno
atteso
+
+
+
-
+
qualsiasi
-
+
-
qualsiasi
-
+
+
-
+
+
qualsiasi
+
-
-
-
qualsiasi
Data una base B, si assegnano:
n cifre per rappresentare la parte intera
m cifre per rappresentare la parte frazionaria
Solo in questi
casi si può
verificare un
OVERFLOW.
In base B=2, abbiamo quindi n+m bit per parte intera e frazionazia
n
Possiamo
controllarlo
confrontando
il bit di segno del
risultato con il
segno atteso.
m
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
Arch. Elab. A - M. Simeoni 21
Arch. Elab. A - M. Simeoni 22
Virgola fissa
Numeri con virgola mobile
Esercizio: 23.62510 = ???2
•
Un numero reale R può essere scritto in base B come
m = mantissa
e = esponente
B = base
•
Esempi con B = 10
(usare la rappresentazione in virgola fissa con n=8, m=8)
Conversione parte intera:
Conversione parte frazionaria:
23 : 2 = 11
11 : 2 = 5
5:2 =2
2:2 =1
1:2 =0
0.625 x 2 = 1.25
0.25 x 2 = 0.50
0.50 x 2 = 1
resto 1
resto 1
resto 1
resto 0
resto 1
parte intera 1
parte intera 0
parte intera 1
–
–
–
–
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=
• Notazione scientifica normalizzata: m =
Soluzione: 23.62510 = 00010111.101000002
Arch. Elab. A - M. Simeoni 23
R = ± m • Be
0 . d-1...d-k
d0 . d-1...d-k con d0 ≠ 0
Arch. Elab. A - M. Simeoni 24
6
Numeri binari in virgola mobile
Numeri FP
Rappresentando mantissa ed esponente in binario in notazione
scientifica normalizzata si ottengono numeri del tipo:
±1. ss....s • 2yy...y
• Esercizio: 1010 = ???2 FP
1010 = 10102 = 1010.02 • 20 = 1.01 • 23
Si osservi che:
Spostare la virgola (punto) a destra di n bit significa decrementare di n
l’esponente
es:
0.01 • 23
Infatti 1 • 2-2 • 23
• Esercizio: 151.2510 = ???2 FP
15110 = 128 + 16 + 4 + 2 + 1 = 100101112
= 1.0 • 21
= 1 • 21
Spostare la virgola (punto) a sinistra di n bit significa incrementare di n
l’esponente
= 1.00011 • 25
es:
100.011 • 23
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
0.2510 x 2 = 0.5010 parte intera 0
parte intera 1
0.5010 x 2 = 110
0.2510 = 0.012
Quindi = 151.2510 = 10010111.012 = 1.0010111012 • 27
Arch. Elab. A - M. Simeoni 25
Numeri FP
Arch. Elab. A - M. Simeoni 26
Numeri FP in standard IEEE 724
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)
Standard IEEE754: Singola precisione (32 bit)
si riescono a rappresentare numeri 2.010 • 2-38 ÷ 2.010 • 238
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
Arch. Elab. A - M. Simeoni 27
Standard IEEE754: Doppia precisione (64 bit)
si riescono a rappresentare numeri 2.010 • 2-308 ÷ 2.010 • 2308
Arch. Elab. A - M. Simeoni 28
7