rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/n2... · i 16 bit nemo...

22
1 1 Rappresentazione dei numeri PH. 3.1, 3.2, 3.3 2 Tipi di numeri Numeri interi, senza segno calcolo degli indirizzi numeri che possono essere solo non negativi Numeri con segno positivi negativi Numeri in virgola mobile calcoli numerici differenti gradi di precisione precisione singola (IEEE) doppia precisione (IEEE) precisione quadrupla

Upload: others

Post on 13-Feb-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

1

1

Rappresentazione dei numeri

PH. 3.1, 3.2, 3.3

2

Tipi di numeri

Numeri interi, senza segnocalcolo degli indirizzinumeri che possono essere solo non negativi

Numeri con segnopositivinegativi

Numeri in virgola mobilecalcoli numericidifferenti gradi di precisione

precisione singola (IEEE)doppia precisione (IEEE)precisione quadrupla

Page 2: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

2

3

Rappresentazione dei numeri

Notazione posizionale

Rappresentazione in base 2 degli interi

Conversione binario-decimale degli interi

Rappresentazione in base 2 dei numeri frazionari

Conversione binario-decimale dei numeri frazionari

Rappresentazione in base 16

4

Sistemi di numerazione posizionali

La base rappresenta il numero di cifre diverse utilizzate per rappresentare i numeri (cardinalità dell'alfabeto)

Il sistema di numerazione in base 10 usa 10 cifre:{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }

Il sistema di numerazione in base 8 (ottale) usa 8 cifre:{ 0, 1, 2, 3, 4, 5, 6, 7 }

Il sistema di numerazione in base 2 (binario) usa 2 cifre:{ 0, 1 }

Il sistema di numerazione in base 16 (esadecimale) usa 16 cifre:{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }

Page 3: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

3

5

Notazione posizionale (1)

Nei sistemi di numerazione il peso di ogni cifra dipende dalla posizione:

L’intero 853 (in base 10) vale:8 centinaia (8 · 102 = 8 · 100 ) +5 decine (5 · 101 = 5 · 10) +3 unità (3 · 100 = 3 · 1)

L’intero 675 (in base 10) vale:6 centinaia (6 · 102 = 6 · 100 ) +7 decine (7 · 101 = 7 · 10) +5 unità (5 · 100 = 5 · 1)

6

Notazione posizionale (2)

In generale, un numero formato da una sequenza di cifrein una base b :

1

0( )

ni

ii

c b−

=

⋅∑

( 1) ( 2) 2 3 0...n nc c c c c− −

ha un valore determinato dalla somma dei pesi (potenzedella base) per il valore della cifra:

ad esempio, per la rappresentazione di 745 si ha che:

12 1 0

2 1 00( ) 10 10 10 7 100 4 10 5 1

ni

ii

c b c c c−

=

⋅ = ⋅ + ⋅ + ⋅ = ⋅ + ⋅ + ⋅∑

Page 4: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

4

7

IL sistema binario (1)

Si usa la base 2 (numeri binari):

Quindi si usano solamente due cifre, indichiamole con 0 e 1

Per esplicitare la base utilizzata, usiamo un pedice

I numeri in base 10 saranno scritti come 85310 e 67510

I numeri in base 2 saranno scritti come 1002 e 112

8

IL sistema binario (2)

il valore del numero è la somma dei pesi di ogni cifra:

( 1) ( 2) 2 3 0...n nc c c c c− −

1

0( 2 )

ni

ii

c−

=

⋅∑

bit meno significativo - il bit di posizione 0 (peso minore)

bit più significativo – il bit di posizione 31 (peso maggiore)

Si consideri un numero binario:

Page 5: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

5

9

IL sistema binario (3)

Ad esempio, il valore in base 10 del numero binario 10112 è:

13 2 1 0

3 2 1 00( ) 2 2 2 2

1 8 0 4 1 2 1 111

ni

ii

c b c c c c−

=

⋅ = ⋅ + ⋅ + ⋅ + ⋅

= ⋅ + ⋅ + ⋅ + ⋅=

10

Conversione decimale binario

11/2 = 5 resto 1

5/2 = 2 resto 1

2/2 = 1 resto 0

1/2 = 0 resto 1

1 0 1 1

Procedimento mediante divisioni ripetute; ad esempio per ottenere il numero binario equivalente al numero decimale 11, si procede:

Page 6: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

6

11

Sistema esadecimale

Il sistema di numerazione in base 16 (esadecimale) usa 16 cifre:

{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, E, F }A vale 10, . . . ., F vale 15

Il valore è dato da:1

0

( (16) )n

ii

i

c−

=

⋅∑

Esempio, il valore di (1A5)16 è :1

2 1 02 1 0

0

( ) 16 16 16

1 256 10 16 5 1 421

ni

ii

c b c c c−

=

⋅ = ⋅ + ⋅ + ⋅

= ⋅ + ⋅ + ⋅ =

12

Da base 16 a base 2 (e viceversa)

Per convertire da base 16 a base 2 basta:convertire una cifra esadecimale alla volta nella corrispondente rappresentazione in base 2

Esempio: per convertire 1AC516 in base 2:1 A C 5

0001 1010 1100 0101

Per convertire da base 2 a base 16 basta:convertire a gruppi di 4 bit per volta partendo dai quattro bit meno significativi

Esempio: per convertire 100 1010 0100 1110 in base 16:0100 1010 0100 11104 A 4 E

Page 7: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

7

13

Notazione posizionale per i frazionari (1)

Per i numeri con una parte frazionaria il meccanismo è lo stessovengono usate posizioni e potenze negative della base

( 1) ( 2) 2 3 0 1 2... . ...n n mc c c c c c c c− − − − −

1

0 1( ) ( )

n mi i

i ii i

c b c b− −

= =−

⋅ + ⋅∑ ∑Esempio, per rappresentare il numero 853.43 risulta:

2 1 0 1 28 10 5 10 3 10 4 10 3 10− −⋅ + ⋅ + ⋅ + ⋅ + ⋅

14

Conversione numeri frazionari

Procedimento che a partire da una frazione F < 1 ottiene la rappresentazione di F in binario (o una approssimazione)Sequenza ripetuta di moltiplicazioni:

Moltiplichiamo F per 2Si ottiene una parte intera (che può essere 0 oppure 1) ed una parte decimale F1La parte intera rappresenta il primo bit più significativomentre F1 viene moltiplicato per 2Si ottiene una parte intera (che può essere 0 oppure 1) ed una parte decimale F2La parte intera rappresenta il secondo bit più significativomentre F2 viene moltiplicato per 2… fino a quando Fi vale 0 oppure decidiamo di fermarci…

Page 8: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

8

15

Conversione numeri frazionari

0.81 ⋅ 2 = 1.62 parte int 1

0.62 ⋅ 2 = 1.24 parte int 1

0.24 ⋅ 2 = 0.48 parte int 0

0.48 ⋅ 2 = 0.96 parte int 0

0.96 ⋅ 2 = 1.92 parte int 1

0.92 ⋅ 2 = 1.84 parte int 1

0 . 1 1 0 0 1 1

Sequenza ripetuta di moltiplicazioni, . . . si prende la parte intera

Esempio, convertire 0.81 :

16

Conversione numeri frazionari

Il processo di conversione di una frazione non necessariamente termina

Una frazione decimale con un numero finito di cifre può avere un numero infinito di cifre nella rappresentazione binaria

possiamo terminare il procedimento quando riteniamo di aver raggiunto una precisione sufficiente

Page 9: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

9

17

Interi con segno

Interi con segno

18

Interi con segno

Finora abbiamo solamente considerato la rappresentazione di interi positivi, per rappresentare interi con segno:

tre possibili rappresentazioni sono:

la rappresentazione con modulo e segnocon modulo e segno

la rappresentazione in complemento a unoin complemento a uno

la rappresentazione in complemento a duein complemento a due

Page 10: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

10

19

Rappresentazione con modulo e segno

2

102

10

( 2 ) 0

( 2 ) 1

ni

i ni

ni

i ni

N c se c

N c se c

−=

−=

= ⋅ =

= − ⋅ =

La rappresentazione in modulo e segnoin modulo e segno usa il bit più significativo per indicare il segno:(++) se bit31 = 00,(--) se bit31 = 11

Il valore del numero risulta essere:

20

AddizioneAddizione e sottrazionesottrazione complicata dasegni dei numerimodulo dei numeri

DoppiaDoppia rappresentazione dello zerozero:infatti lo zero può essere rappresentato (es.: su 8 bit)

sia da 0 000 0000che da 1 000 0000

Non va bene ! Vorremmo…una rappresentazione che faciliti la progettazione della

ALUche non deve essere complicata da problemi dovuti alla rappresentazione

Alcuni problemi del “modulo e segno”

Page 11: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

11

21

Rappresentazione in complemento 2

Rappresentazione in complemento 2

22

Rappresentazione in complemento 2

( 1) ( 2) 3 2 0...n nc c c c c− −

21

10

2 ( )n

n in i

iV c c b

−−

−=

= − ⋅ + ⋅∑

Dato un numero in base 2 :

Il valore del numero espresso in complemento a due è :

Il bit più significativo assume peso negativo !

Page 12: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

12

23

Rappresentazione in complemento 2

Poiche’ è :

Il numero è positivo positivo se il bit più significativo vale 00

Il numero è negativo negativo se il bit più significativo vale 11

)(22

0

11

in

ii

nn bcc ⋅>⋅− ∑

=

−−

24

Rappresentazione in complemento 2

Esempio, il numero 1 1 0 1 su 4 bit vale :

1 8 1 4 0 2 1 1 8 4 1 3− ⋅ + ⋅ + ⋅ + ⋅ = − + + = −

0 1 1 1 7 1 0 0 0 -8

0 1 1 0 6 1 0 0 1 -7

0 1 0 1 5 1 0 1 0 -6

0 1 0 0 4 1 0 1 1 -5

0 0 1 1 3 1 1 0 0 -4

0 0 1 0 2 1 1 0 1 -3

0 0 0 1 1 1 1 1 0 -2

0 0 0 0 0 1 1 1 1 -1

Esempio, i numeri in complemento 2 su 4 bit :

Page 13: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

13

25

Conversione da decimale a binario

Supposto XX numero decimale da convertire

a) Fissare il numero nn di cifre binarie da usare per la rappresentazione del numero convertito in binario

b) se XX è positivo :si converte XX in binario su gli n-1 bit meno significativisi pone il bit più significativo a 00

c) se XX è negativo :si converte in binario 22nn--11 + X+ X su gli n-1 bit meno significativisi pone il bit più significativo a 11

26

Conversione da decimale a binario

Esempio: convertire il numero X = -4 su n = 5 bit

convertiamo 2n-1 + X = 24 – 4 = 16 – 4 = 12 su n-1 = 4 bitotteniamo il risultato parziale 1 1 0 0

mettiamo il bit più significativo (il quinto) a 1otteniamo il risultato finale 1 1 1 0 0

Page 14: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

14

27

Lavorare con il complemento a due

Espansione:ad es. passare da numeri a 16 bit a numeri a 32 bitrichiesto per operazioni con registri (32 bit) e operazioni immediate (16 bit)Estensione del segno

i 16 bit nemo significativi restano invariaticopia il segno (bit più significativo) nei rimanenti 16 bit

0000 0000 0000 0010 2

0000 0000 0000 0000 0000 0000 0000 0010

1111 1111 1111 1110 -2

1111 1111 1111 1111 1111 1111 1111 1110

28

Addizione binaria

PH 3.3

Page 15: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

15

29

Esempio di addizione

0 1 0 1 1 +

1 0 0 1 0 =

1 1 1 0 1

0 0 1 0 riporti

Supponiamo di addizionare i due numeri binari 01100(1110) e 10010 (1810) :

30

Aritmetica complemento a due

Operazione di negazione

Negazione nell'aritmetica complemento a 2 :dato un numero AA in rappresentazione binaria complemento a due vogliamo ottenere ––AA (sempre in rapp.zione binaria)

Per ottenere la rappresentazione in complemento due di --AA(1) si complementa ogni cifra binaria di AA(2) si aggiunge 1 alla sequenza di bit cosi ottenuta

Page 16: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

16

31

Operazione di negazione

Esempio, si vuole ottenere la negazione del numeroA = -62(nella rappresentazione binaria complemento 2 su 8 bit)

la rappresentazione su 8 bit di –62 è :

1 1 0 0 0 0 1 0

sommando 1 si ottiene il risultato :

0 0 1 1 1 1 0 1

0 0 1 1 1 1 1 0

il suo complemento bit a bit è :

32

Operazione di negazione, giustificazione

21

10

2 1 ( 2 )n

n in i

i

B c c−

−−

=

= − ⋅ + + ⋅∑

21

10

2 ( 2 )n

n in i

i

A c c−

−−

=

= − ⋅ + ⋅∑

21

110

( ) 2 1 ( ) 2n

n in in i

i

A B c c c c−

−−−

=

+ = − + ⋅ + + + ⋅∑

Supponiamo che AA (in complemento a 2) sia il numero da negare, il suo valore è:

Costruiamo BB (negazione di A) complementando i bit di AA ed aggiungendo 1, otteniamo:

Calcoliamo A + B; se vale A + B = 0A + B = 0 allora B = B = --AA

Page 17: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

17

33

Operazione di negazione, giustificazione

21

110

( ) 2 1 ( ) 2n

n in in i

i

A B c c c c−

−−−

=

+ = − + ⋅ + + + ⋅∑

21 1 1

0

2 1 2 2 1 (2 1) 0n

n i n n

i

A B−

− − −

=

+ = − + + = − + + − =∑

( ) 1c c+ =Osservando che :

Dall'espressione:

Ricaviamo :

34

Operazione di negazione, osservazioni

Supponiamo di negare il numero A = 0A = 0(rappresentazione in complemento a 2 su 5 bit)

0 0 0 0 0la rappresentazione:

il complemento bit a bit: 1 1 1 1 1

sommando 1 : 1 1 1 1 1

1 1 1 1 10 0 0 0 1 +

1 0 0 0 0 0il bit di riporto viene ignorato !

Page 18: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

18

35

Operazione di negazione, osservazioni

Se si prova a negare ne risulta:

1 0 0 0 0la rappresentazione:

il complemento bit a bit: 0 1 1 1 1

sommando 1 : 0 1 1 1 1

1 1 1 1 10 0 0 0 1 +

1 0 0 0 0

la negazione del numero non può essere rappresentata in complemento a 2 !

12n−−

36

Operazione di negazione, osservazioni

12n−−

corrispondente a : 1 0 0 . . . 0 0 0 0

Il massimo negativo è :

Il massimo positivo è : 12 1n −− −

corrispondente a : 0 1 1 . . . 1 1 1 1

Un numero negativo in più rispetto ai numeri positivi

Assimetria inevitabile, dovendo rappresentare: i positivi, lo zero, e i negativi con un numero 2n di configurazioni possibili

Page 19: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

19

37

La regola di overflow

Nella somma di interi con segno rappresentati in complemento due si verifica un OVERFLOW se e solo se:

la somma di due interi positivi da come risultato un intero negativo

la somma di due interi negativi da come risultato un intero positivo

La somma di due operandi con segno opposto non può dare overflow; infatti: la somma è minore o uguale, in valore assoluto, di uno degli addendi degli addendi; es. -10 + 4 = -6

38

Somma e overflow (1)

Somma dei numeri 5 e 4 su n=4 bit ( max rappr. 23-1=7 )

0 1 0 1 +

0 1 0 0 =

1 0 0 1

overflow, la somma di due numeri positivi non può dare un negativo !

Page 20: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

20

39

Somma e overflow (2)

Somma dei numeri -6 e -7 su n=4 bit ( min rappr. -23 = -8 )

l’ultimo bit di riporto viene ignorato

1 0 1 0 +

1 0 0 1 =

0 0 1 11

overflow, la somma di due numeri negativi non può dare un positivo !

40

Sottrazione

Per calcolare A – B si osserva cheA – B = A + (-B)

procedimento:

negazione di B

somma A + negazione di B

nella rappresentazione complemento 2 non è necessario un circuito apposito diverso da quello della somma per implementare in hardware la sottrazione !

Page 21: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

21

41

Overflow sottrazione

Sottrazione implementata con negazione e sommaVale regola overflow somma

somma di due interi positivi con risultato un intero negativosomma di due interi negativi con risultato un intero positivo

Sottrazioneoperandi con lo stesso segno NO overflowoperandi segno diverso:

se risultato segno diverso dal minuendo SI overflow

Riassunto condizioni overflow

≥ 0≥ 0< 0A - B< 0< 0≥ 0A - B≥ 0< 0< 0A + B< 0≥ 0≥ 0A + B

risultatoBAoperazione

42

Esempio overflow in sottrazione

A – B = 5 – (-3) = A + (-B) = + 8

A = 5 rappr. su 4 bits A = 0101B = -3 rappr. complemento 2 B = 1101

- B = 0011

0 1 0 1 +

0 0 1 1 =

1 0 0 0A positivo, B negativorisultato negativo

overflow

Page 22: Rappresentazione dei numeridepoli/fi2ae/slides_pw/old-lucidi-06/mips/N2... · i 16 bit nemo significativi restano invariati copia il segno (bit più significativo) nei rimanenti 16

22

43