23
Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Embed Size (px)

Citation preview

Page 1: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Sistemi posizionali, numeri binari, complemento a due

Rappresentazioni numeriche

Page 2: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Conversione dalla base 10 alla base 2

Dato un numero N la sua rappresentazione in base due sarà del tipo ck ck-1ck-2 … c1c0 (dove “ci” è una cifra binaria)

Per convertire un numero in base dieci nel corrispondente in base due si devono trovare i resti delle divisioni successive del numero N per due

Page 3: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Conversione dalla base 10 alla base 2

Esempio: il numero 610:

6/2 = 3 resto 03/2 = 1 resto 11/2 = 0 resto 1

Leggendo i resti dal basso verso l’alto, si ha che la rappresentazione binaria del numero 610 è 1102

Page 4: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Conversione dalla base 10 alla base 2

Esempio: il numero 34510:

345/2 = 172 resto 1172/2 = 86 resto 086/2 = 43 resto 043/2 = 21 resto 121/2 = 10 resto 110/2 = 5 resto 05/2 = 2 resto 12/2 = 1 resto 01/2 = 0 resto 1

Leggendo i resti dal basso verso l’alto (in quanto si ottengono a partire dalla cifra meno significativa, l’unità), si ha che rappresentazione binaria del numero 34510 è 1010110012

Page 5: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Conversione dalla base 2 alla base 10

Sia cm cm-1cm-2 … c1c0 un numero rappresentato in base 2, usiamo:

cm x 2m + cm-1 x 2m-1 + cm-2 x 2m-2 + … + c1 x 21 + c0 x 20 = N

Esempio: 1010110012

1 x 28 + 0 x 27 + 1 x 26 + 0 x 25 + 1 x 24 + 1 x 23 +

0 x 22 + 0 x 21 + 1 x 20 =

256 + 64 + 16 + 8 + 1=

345

Page 6: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Altri basi: ottale, esadecimale

Sistema ottale Utilizza una notazione posizionale basata su

otto cifre (0,1,…,7) e sulle potenze di 8 Esempio: 1038 = 1 x 82 + 0 x 81 + 3 x 80 = 67

Sistema esadecimale Utilizza una notazione posizionale basata su

sedici cifre (0,1,…,9,A,B,C,D,E,F) e sulle potenze di 16

Esempio: 10316 = 1 x 162 + 0 x 161 + 3 x 160 = 259

Esempio: AC416 = 10 x 162 + 12 x 161 + 4 x 160 = 2756

Page 7: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Operazioni su numeri binari

Vediamo solo il caso della addizione nella codifica binaria: Si mettono in colonna i numeri da sommare Si calcola il riporto ogni volta che la somma

parziale supera il valore 1Addizione:

0 + 0 = 0 con riporto 00 + 1 = 1 con riporto 01 + 0 = 1 con riporto 01 + 1 = 0 con riporto 1

Page 8: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Operazioni su numeri binari

Addizione:0 + 0 = 0 con riporto 00 + 1 = 1 con riporto 01 + 0 = 1 con riporto 01 + 1 = 0 con riporto 1

Esempi:

1 + 1 =1 0

1 0 1 + 1 1 = 1 0 0 0

1 0 1 1 0 1 0 1 + 1 0 0 0 1 1 0 =1 1 1 1 1 0 1 1

1 1 1 + 1 1 = 1 0 1 0

Page 9: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Codici a lunghezza fissa

Se si usa un numero prestabilito di cifre si ha un codice a lunghezza fissa

In questo modo si pone anche un limite al numero massimo rappresentabile

Esempio: qual è il numero più grande rappresentabile con 4 cifre? In base 10: 9999 In base 2: 1111 (=1510) In base 16: FFFF (=6553510) In base 8: 7777 (=409510)

Page 10: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Codici a lunghezza fissa

Numeri maggiori di quello massimo rappresentabile causano problemi di overflow Ovvero per essere rappresentati richiedono

più cifre di quelle a disposizioneEsempio: 4 cifre

In base 10: 9999 + 1 = 1000010

In base 2: 1111 + 1 = 100002 (=1610)

In base 16: FFFF + 1 = 1000016 (=6553610)

In base 8: 7777 + 1 = 100008 (=409610)

Page 11: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Codici a lunghezza fissa

In generale, con N cifre a disposizione e base b il più grande numero (intero positivo) rappresentabile si può esprimere come

bN – 1Esempio: N=4

In base 10: 9999 = 104 - 1 In base 2: 1111 = 24 - 1 In base 16: FFFF = 164 - 1 In base 8: 7777 = 84 - 1

Page 12: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Codici a lunghezza fissa

Esempio di overflow nel sistema binario dovuto a operazioni aritmetiche: 5 + 4 = 9 (in sistema decimale) abbiamo usato solo un cifre decimale per il

risulto Ricordiamo: 510 = 1012 , 410 = 1002

Errore: overflow (non può essere codificato

910 = 10012 con tre bit)

1 0 1 + 1 0 0 =1 0 0 1

(in sistema binario)

Page 13: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Rappresentazione dei numeri

In realtà, una semplice codifica binaria come quella discussa fino ad ora non è sufficiente, per due motivi: Numeri negativi Numeri con la virgola

Per questi numeri vengono utilizzate delle rappresentazioni differenti Per esempio “complemento a due” per

rappresentare i numeri negativi

Page 14: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Rappresentazione dei numeri negativi

Si può pensare di usare un bit per il segno “0” identifica “+” “1” identifica “-”

Gli altri bit vengono usati per codificare il valore assoluto (modulo) del numero

Page 15: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Rappresentazione dei numeri negativi

Con 3 bit avremo:

000 +0

001 +1

010 +2

011 +3

100 -0

101 -1

110 -2

111 -3

Problemi: Il numero 0 ha

due rappresentazioni

Per l’operazione di somma si deve tener conto dei segni degli addendi 0 0 1 0 + (+2)

1 0 1 1 = (-3) 1 1 0 1 (-5 ERRATO)

Page 16: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Rappresentazione dei numeri negativi

Complemento a due: Il bit più significativo rappresenta il segno del numero:

0 per i numeri positivi e 1 per i numeri negativi La rappresentazione di un numero positivo si ottiene

codificando il valore assoluto del numero con i bit restanti

La rappresentazione di un numero negativo si ottiene in tre passi: Si rappresenta in complemento a due il numeri positivo con

lo stesso valore assoluto del numero negativo da codificare Si invertono tutti i bit in tale rappresentazione (01,10) Si somma uno al risultato ottenuto al passo precedente

Page 17: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Complemento a due

Esempio (con 4 bit a disposizione): La codifica di +5 è 0101 La codifica del numero –5 avviene in tre

passi: La rappresentazione in complemento a due di +5 è

0101 Invertendo tutti i bit si ottiene 1010 Sommando 1 si ottiene 1011, la rappresentazione in

complemento a due di -5

Page 18: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Complemento a due

Per ottenere un numero con segno data la sua rappresentazione in complemento a due: Se il primo bit è 0 il numero è positivo: per

calcolarne il valore assoluto si esegue la conversione da binario a decimale

Se il primo bit è 1 il numero è negativo: Si ignora il primo bit Si invertono i restanti bit Si converte il numero da binario a decimale Si somma uno al numero ottenuto per ottenere il valore

assoluto del numero negativo

Page 19: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Complemento a due

Esempio: 1011 Si esclude il primo bit Invertendo 011 si ottiene 100 che è codifica

di 4 Va aggiunto 1 per ottenere il valore assoluto

5 Il risultato è quindi -5

Page 20: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Esercizio

Esercizio: Rappresentare -3510 in complemento a 2

001000112 = +35

10

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

Complemento a uno

Page 21: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Complemento a due

Con 3 bit avremo:

000 +0

001 +1

010 +2

011 +3

100 -4

101 -3

110 -2

111 -1

Esempi di addizione: 0 0 1 0 +

(+2) 1 0 1 1 = (-5) 1 1 0 1

(-3)

0 1 1 1 + (+7) 1 0 1 1 = (-5) 0 0 1 0

(+2)

Nel secondo esempio, l’overflow è ignorato

Page 22: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Codifica dei numeri

Codificare il numero 13210 nella corrispondente rappresentazione binaria

Ordinare in modo crescente i seguente numeri: 10410 , 128 , 1000100002 , 1001110

Codificare il numero negativo –1210 nella rappresentazione in complemento a due

Page 23: Sistemi posizionali, numeri binari, complemento a due Rappresentazioni numeriche

Concludendo …

« There are only 10 types of people in the world: those who understand binary and those who don't »

« Ci sono solamente 10 tipi di persone nel mondo: chi comprende il sistema binario e chi no »