Esercitazioni su rappresentazione dei numeri e aritmetica dei …architet/lezioni/03_ese... ·...
Transcript of Esercitazioni su rappresentazione dei numeri e aritmetica dei …architet/lezioni/03_ese... ·...
Architettura degli Elaboratori 1
Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori
slide a cura di Salvatore Orlando & Marta Simeoni
Architettura degli Elaboratori 2
Interi unsigned in base 2Si 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 ?
Quanti e quali numeri sono rappresentabili su n bit?
N = dn-1• 2n-1 + .... + d1• 21 + d0• 20
Con sequenze di n bit sono rappresentabili 2n numeri naturali (da 0 a 2n-1)
00….00 = 0 00….01 = 1 00….10 = 2 … 01….11 = 2n-1- 1 10….00 = 2n-1 … 11….11 = 2n - 1 100….00 = 2n
Architettura degli Elaboratori 3
Interi unsigned in base 2
I seguenti numeri naturali sono rappresentabili usando il numero di bit specificato ?
2010 su 5 bit ? 6410 su 6 bit ? 50010 su 9 bit ? 102510 su 10 bit ?
SI
SI NO
NO
Ricorda che: 20 = 1 21 = 2 22 = 4 23 = 8 24 = 16 25 = 32 26 = 64 27 = 128 28 = 256 29 = 512 210 = 1024 ....
Architettura degli Elaboratori 4
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 5
Conversione decimale-binarioEsercizio: 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 6
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.
Esercizio: 12310 = ???2
Ricorda che: 20 = 1 21 = 2 22 = 4 23 = 8 24 = 16 25 = 32 26 = 64 27 = 128 28 = 256 29 = 512 210 = 1024 ....
123 - 64 = 59 ==> 26
59 - 32 = 27 ==> 25
27 - 16 = 11 ==> 24 11 - 8 = 3 ==> 23 3 - 2 = 1 ==> 21 1 - 1 = 0 ==> 20
Allora 12310 = 26 + 25 + 24 + 23 + 21 + 20
Soluzione: 12310 = 11110112
Architettura degli Elaboratori 7
Conversione binario-ottale e viceversa
Esercizio: 101011112 = ???8
Esercizio: 6358 = ???2
10 101 111 2 5 7
Soluzione: 101011112 = 2578
6 3 5 110 011 101
Soluzione: 6358 = 1100111018
Architettura degli Elaboratori 8
Base 16Quali dei seguenti numeri esadecimali sono numeri sono corretti?
BED CAR 938 DEAD BEBE A129 ACI DECADE BAG DAD 4H3
Architettura degli Elaboratori 9
Conversione binario-esadecimale e viceversa
Esercizio: 1011111011012 = ???16
Esercizio: A3C916 = ???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
1011 1110 1101
B E D
A 3 C 9 1010 0011 1100 1001
Soluzione: 1011111011012 = BED16 = 305310
Soluzione: A3C916 = 10100011110010012 = 4192910
Architettura degli Elaboratori 10
Interi signed in complemento a 2Come 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 ... 01......11 = 2n-1-1 (massimo pos.) 10......00 = -2n-1 (minimo neg.) ... 11......11 = -1
in totale sempre 2n numeri
Architettura degli Elaboratori 11
Interi signed in complemento a 2Dato 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 12
Complemento a 2: cambio di segnoEsercizio: Rappresentare -3510 in complemento a 2 su 8 bit
001000112 = +3510 11011100 + 1 = ------------ 11011101
Complemento a uno
Soluzione: -3510 = 110111012
Architettura degli Elaboratori 13
Complemento a 2: cambio di segnoEsercizio: Rappresentare -35 in complemento a 2 su 8 bit
001000112 = +3510 110111012
Inverti (complementa a 1) tutti i bit a sinistra del bit “1” meno significativo
Architettura degli Elaboratori 14
Complemento a 2: cambio di segnoEsercizio: 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 15
Complemento a 2: somma e sottrazioneEsercizio: 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 16
Complemento a 2: somma e sottrazioneEsercizio: 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 17
Complemento a due: OverflowIn 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
NONO
SI
Architettura degli Elaboratori 18
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 19
Complemento a due: come scoprire l’overflowSecondo 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 20
EsercizioConsiderate i numeri esadecimali x1 = 7A x2 = 13 x3 = FF x4 = C1 x5 = 84
Scrivere i cinque numeri in codice binario a 8 bit
Interpretare il codice binario in complemento a due ed eseguire le operazioni x1- x2; x3 + x4; x4 + x5; x4 - x1
x1 = 0111 1010 x2 = 0001 0011 x3 = 1111 1111
x4 = 1100 0001 x5 = 1000 0100
11111000 x1 01111010 + -x2 11101101 = _____________ (101100111) mod 28 = 01100111 overflow?
Architettura degli Elaboratori 21
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 22
Esercizio - caso particolareSi 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 +-Y 100 ______ (0101) mod 23 = 101 OVERFLOW, anche se riporti concordi !!Abbiamo infatti sottratto un numero negativo da un numero >= 0 ⇒ il segno atteso è positivo
Il complemento a due non ha effetto
Architettura degli Elaboratori 23
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 X 111 +-Y 100 ______ (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
corretto
Il complemento a due non ha effetto
Architettura degli Elaboratori 24
Procedura generale per determinare l’OVERFLOW
Operazione Segno 1o operando
Segno 2o operando
Segno atteso
Somma Somma Somma Somma
+ + - - -
+ - qualsiasi
qualsiasi -
+ +
Sottrazione Sottrazione Sottrazione Sottrazione
+ + - - -
+ - +
- qualsiasi
+ qualsiasi
Solo in questicasi si può verificare un OVERFLOW.
Possiamo controllarloconfrontandoil bit di segno del risultato con il segno atteso.
Alla luce dell’esempio precedente, guardare solo ai due ultimi riporti per controllare l’OVERFLOW potrebbe quindi portare a risultati erronei