Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei...

43
Rappresentazione numeri con e senza segno ([PH] par. 2.4) Giovedì 1 ottobre 2015 (ore 9-13)

Transcript of Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei...

Page 1: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Rappresentazione numeri con e senza segno ([PH] par. 2.4)

Giovedì 1 ottobre 2015 (ore 9-13)

Page 2: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Punto della situazione

• Abbiamo visto:– la rappresentazione dei numeri positivi con e senza

virgola nel sistema posizionale; in particolare basi 2, 8, 10, 16 e conversioni

– Codifica simboli non numerici (ASCII)

• Oggi vedremo le rappresentazioni per numeri con il segno; in particolare la rappresentazione in complemento a 2 e la sua aritmetica.

• Oggi 4 ore: lezione ed esercitazioni

• Domani: né lezione né ricevimento

Page 3: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,
Page 4: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,
Page 5: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Rappresentazione in complemento a 2: vantaggi

• Una sola rappresentazione per lo zero

• Intervallo di rappresentazione: [-2n-1 , 2n-1 – 1 ]

per es. con 4 bit [-8, +7] anzichè [-7, +7]

• L’aritmetica è più semplice

• Cambiare di segno/ ottenere l’opposto è ancora semplice.

• Un’osservazione….

Page 6: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Somma di potenze consecutive di 2

26+ 25+ 24+ 23+ 22 = 26+ 25+ 24+ 23+ 22 + 21 + 20

– ( 21 + 20 )== (27 – 1) – (22 – 1) = 27 – 22

hkk

hi

i 222 1

122 1

0

kk

i

i

26+ 25+ 24+ 23+ 22 + 21 + 20 = 27 - 1

Page 7: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Complemento a Due

• Il bit più a sinistra/più significativo viene utilizzato come segno:

– 0 significa positivo

– 1 significa negativo

• Il peso del bit di segno è negativo

• Il valore di bn-1bn-2…b0 è dato dalla relazione

2

0

1

1 22n

i

i

i

n

n bbN

Page 8: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Esempio con n=4 bit

0 000 = 0

0 001 = 1

0 010 = 2

0 011 = 3

0 100 = 4

0 101 = 5

0 110 = 6

0 111 = 7

1 000 = -8

1 001 = -8 +1=-7

1 010 = -8+2=-6

1 011 = -8+3 =-5

1 100 = -8+4=-4

1 101 = -8+5=-3

1 110 = -8+6=-2

1 111 = -8+7=-1Massimo=7

minimo=-8

Intervallo di rappresentazione con 4 bit: [-8, +7]

Page 9: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Esempio con n=32 bit

0 0…00 = 0

0 0…01 = 1

0 0…10 = 2

0 0…11 = 3

….

0 1…10 = 231 - 2

0 1 …11 = 231 - 1

1 0…00 = - 231

1 0…01 = -231 +1

1 0…10 = -231 +2

1 0…11 = -231 +3

………..

1 1…10 = -231 +231 – 2=-2

1 1…11 = -231 +231 – 1=-1Massimo= 231 - 1

minimo=- 231

Intervallo di rappresentazione con 32 bit: [- 231, 231 -1]

Page 10: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Numeri Rappresentabili

• 8 bit in Complemento a 2

+127 = 01111111 = 27 -1

-128 = 10000000 = -27

• 16 bit in Complemento a 2

+32767 = 011111111 11111111 = 215 - 1

-32768 = 100000000 00000000 = -215

• 32 bit in Complemento a 2

+ 2 147 483 647 = 0111……..111 = 231 - 1

- 2 147 483 648 = 1000………000 = -231

Page 11: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Intervallo di rappresentabilità

Numeri rappresentabili con n bit in Complemento a 2

minimo: 1000………000 = -2n-1

Massimo: 0111……..111 = 2n-1 – 1

[-2n-1 , 2n-1 – 1 ]

Page 12: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Vantaggi

• Una sola rappresentazione per lo zero

• L’aritmetica è più semplice

• Cambiare di segno/ ottenere l’opposto è ancora semplice.

– La rappresentazione in complemento a 2 di un intero negativo si può ottenere trovando la rappresentazione in complemento a 2 del suovalore assoluto e calcolando poi l’opposto.

Page 13: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Cambiamento di segnoCambiare di segno è semplice.Algoritmo 1:

• Si esegue il complemento bit a bit o negazione (sitrasforma ogni 1 in 0 e viceversa)

• Si somma 1

Esempio:Con 8 bit: 310 = 00000011

Si esegue il complemento bit a bit 11111100+Si somma +1 1=

1111110111111101=11111111-10= -110 -210 = - 310

Sarà un caso?

Page 14: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Non è un casoCambiare di segno è semplice:

• Si esegue il complemento bit a bit (si trasforma ogni 1 in 0 e viceversa)

• Si somma 1

Perchè funziona?

Se sommiamo un numero x e il suo complemento c(x)

00000011 +

11111100 =

11111111

Otteniamo 111….111 che in complemento a 2 è -1.

Quindi: x + c(x) = -1

- x = c(x) + 1

Page 15: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Cambiamento di segno (2)

Algoritmo 2:• Partendo da destra si lasciano invariati tutti i bit

fino al primo 1 compreso, poi si invertono irimanenti

Rivediamo:

1210 = 00001100 c’è un modo diretto?11110011+

1=11110100

Page 16: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,
Page 17: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Il caso dello 0

Proviamo a cambiare di segno lo 0 rappresentato con n=8 bit con l’ Algoritmo 1.

0 = 00000000Negazione: 11111111+Somma di 1: 1 =Risultato: 1 00000000La cifra più a sinistra si perde (8 bit), quindi:

- 0 = 0

Page 18: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Proviamo a cambiare di segno il minimo rappresentato con n=8 bit con l’ Algoritmo 1.

-128 = - 27 = 10000000Negazione: 01111111+Somma di 1: 1 =Risultato: 10000000 = -128 !!!

In realtà sappiamo che con 8 bit l’intervallo di rappresentazione è [- 27, 27 -1] = [-128, 127]128 non apparteiene all’intervallo di rappresentabilità: c’è overflow!

Il caso del minimo

Page 19: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Estensione del segno• Per i numeri positivi si aggiungono 0 nella parte più

significativa+18 = 00010010 = 24+ 2= 18

+18 = 00000000 00010010 = 24+ 2= 18

• Per i numeri negativi si aggiungono 1 nella parte piùsignificativa-18 = 101110= -25+ 23+ 22+2= -32 +14=-18

-18 = 1111 101110 = -29+(28 + … + 25) + 23+ 22+2 =

= -29+(29 - 25) + 23+ 22+2 = -25+ 23+ 22+2= -18

• Regola dell’estensione del segno: Si completa la rappresentazione riportando a sinistra il bit piùsignificativo.

Page 20: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,
Page 21: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Aritmetica in binario

Page 22: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,
Page 23: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

La somma in binario

1010110101110 +

1101011101101 =

Non sono un problema

0+0=0

0+1=1

1+0=1

Sono un problema

1+1= ?210

Page 24: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Regole

0

1

0 1+

0 1

1 0

0

1

0 1

0 0

0 1

c

Somma Riporto

Page 25: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

an-1…ai…a2a1a0 +

bn-1…bi…b2b1b0 =

s0s1s2sisn-1

c1c2cicn-1cn

sn

Addizione

……

si bit di sommaci bit di riporto / carry

Page 26: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Esempio

1010110101110 +

1101011101101 =

1101100100001

10 011 01111111

1

Page 27: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Un caso particolare

1 1 1 1 1 1 +

1 =

000000

1 11111

1

In generale:

2n-1+ 2n-2+ … +21 + 20 = 2n-1

1221

0

nn

i

i

(1 1 1 … 1 1) 2 = 2n-1+ 2n-2+ … +21 + 20

(1 1 1 … 1 1) 2 + 1 = (1 0 0 0 … 0 0 ) 2 = 2n

Da cui: (1 1 1 … 1 1) 2 = 2n - 1

n

n

n

n

Formula da ricordare!Dimostrata classicamente per induzione

Page 28: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Un’altra prova

2n-1+ 2n-2+ … +21 + 20 = 2n-1

1221

0

nn

i

i

(0 0 0 … 0 0 ) 2 = 0

(1 1 1 … 1 1) 2 = 2n - 1

n

n

Dimostrazione:Con n bit posso rappresentare gli interi da 0 0 0 … 0 0 a 1 1 1 … 1 1

(00…0 è il più piccolo, 11…1 è il più grande possibile)

Con n bit è possibile rappresentare tutti i 2n interi compresi fra 0 e 2n-1

n n

Page 29: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Un caso particolare

1 1 1 1 1 1 +

1 =

000000

1 11111

1

(111111)2 = 127 può essere rappresentato con 6 bit

(1000000) 2 = (111111)2 + 1 = 128 necessita di 7 bit

Nota: La somma di due numeri rappresentati con n bit può essere un numero che necessita di n+1 bit per essere rappresentato, cioè un numero che supera 2n -1: OVERFLOW!Overflow = traboccamento

Page 30: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,
Page 31: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Aritmetica in complemento a due

Page 32: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Complemento a Due

• Il bit più a sinistra viene utilizzato come segno.

• 0 significa positivo

• 1 significa negativo

• Il peso del bit di segno è negativo

• Il valore di bn-1bn-2…b0 è dato dalla relazione

2

0

1

1 22n

i

i

i

n

n bbN

Page 33: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Somma e Sottrazione in complemento a 2

• Somma

– Si utilizza la normale somma binaria

– L’ultimo (l’n-esimo) bit di riporto si ignora

– Alla fine bisogna controllare la consistenza dei segni: se non c’è consistenza significa che siamo in presenza diunnumero al di fuori dell’intervallo di rappresentazione: questa situazione si chiama overflow o traboccamento.

• Sottrazione

– Si calcola l’opposto del sottraendo e si somma al minuendo

– a - b = a + (-b)

• Avremo quindi bisogno dei soli circuiti di somma e complemento

Più in dettaglio….

Page 34: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,
Page 35: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,
Page 36: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Maggiori dettagli ([P] 6.2)

A= an-1an-2…a0 , B= bn-1bn-2…b0 , A+B= sn-1sn-2…s0

1. A≥0, B ≥0 e A+B ≥2n-1 (overflow): sn-1=1 (somma negativa!)

2. A<0, B<0 e A+B ≥2n-1 (overflow): sn-1=0 (somma positiva!)

3. A≥0, B<0 e |A| ≥ |B|: corretto ignorando l’n-esimo riporto

4. A≥0, B<0 e |A| < |B|: corretto

Si usa che se B<0 allora bn-1=1 e il valore di bn-2…b0 è uguale a 2n-1 -|B|.

Esempio: n=4; B=1011=-5; 011=3 = 8 - 5

Page 37: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Caso 1: A ≥ 0, B ≥ 0

Somma di positivi è negativa: traboccamento!

Corretto!

Page 38: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Caso 2: A < 0 B < 0 (es. 6.5 corretto)

Somma di negativi è positiva: traboccamento!

Corretto: trascurare riporto!

1 0 0 0 1 11 1 0 0 1 1 1 0 1 0 0 1 0 1 1 1 0 0

Page 39: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Casi 3 e 4: A ≥ 0 , B<0

• 3

• 4

Corretto: trascurare riporto!

Page 40: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,

Regola

La somma in complemento a 2 si fa come nel caso binario tranne che:• Si trascura l’eventuale bit di riporto finale (cn)• Si deve controllare la consistenza dei segni: se la

somma di positivi è negativa o la somma di due negativi è positiva significa che c’è traboccamento/overflow (altrimenti il risultato è corretto)

Dimostrazione del caso generale: facoltativa ([P] par. 6.2)

Page 41: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,
Page 42: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,
Page 43: Rappresentazione numeri con e senza segno - UNISA · 2015. 10. 1. · –la rappresentazione dei numeri positivi con e senza virgola nel sistema posizionale; in particolare basi 2,