CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con...

44
CODIFICA NUMERICA Ing. Daniele Corti Copyright © Ing. Daniele Corti 2013 www.ingdanielecorti.it Tutti i diritti sono riservati a norma di legge e a norma delle convenzioni internazionali. Ver.1.0

Transcript of CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con...

Page 1: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

CODIFICA

NUMERICA

Ing. Daniele Corti

Copyright © Ing. Daniele Corti 2013

www.ingdanielecorti.it

Tutti i diritti sono riservati a norma di legge e a norma delle convenzioni internazionali.

Ver.1.0

Page 2: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

2 Copyright © 2013 – Ing. Daniele Corti

PREREQUISITI

Linguaggio binario.

Codifica.

OBIETTIVI

Realizzare codifiche/decodifiche di numeri naturali, relativi e reali in notazione fissa.

ARGOMENTI

I sistemi di numerazione.

Il sistema decimale.

Il sistema binario.

Codifica binaria.

Codifica da decimale a binario di numeri naturali.

Decodifica da binario a decimale di numeri naturali.

Codifica/decodifica dei numeri relativi con la tecnica CPM2 (complemento a 2).

Codifica/decodifica di numeri decimali in notazione virgola fissa.

Sistemi esadecimali e ottali.

Esercizi.

Page 3: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

3 Copyright © 2013 – Ing. Daniele Corti

CAP5 – CODIFICA NUMERICA

I SISTEMI DI NUMERAZIONE

Fin dalla preistoria l’uomo ha avuto la necessità di “fare calcoli”, utilizzando svariati tipi di

dispositivi: manuali (mani, bastoncini, sassi, abaco), meccanici ed elettronici.

Figura 1 - L'abaco

Per fare i calcoli l’uomo ha bisogno di regole, cioè un sistema di numerazione.

Un sistema di numerazione è una tecnica che consente la rappresentazione dei numeri

attraverso un insieme di simboli.

Un numero si compone di cifre, cioè di simboli ad ognuno dei quali viene associato univocamente un

valore diverso dagli altri. Per scrivere tutti i numeri in un determinato sistema di numerazione

dobbiamo conoscere quali sono le cifre base.

I sistemi di numerazione moderni sono sistemi di numerazione posizionali, ovvero una stessa cifra

ha un “peso” diverso in dipendenza dalla posizione che essa occupa all’interno del numero in

questione. Per esempio nel numero 44, la cifra 4 che si trova a sinistra vale 10 volte di più di quella

che le sta immediatamente a destra.

Da ciò nasce il concetto di base: la base indica il numero di cifre a disposizione del sistema di

numerazione e, di conseguenza, quante volte di più vale la stessa cifra man mano che questa occupa

una posizione sempre più a sinistra all’interno di un numero. Pertanto si può pensare che ad ogni

posizione all’interno di un numero sia associato un “peso” che non è altro che una potenza della base

del sistema di numerazione considerato.

In generale, possiamo parlare di sistema di numerazione in base B, se abbiamo a disposizione B

simboli (alfabeto) per poter rappresentare tutte le possibili sequenze.

Page 4: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

4 Copyright © 2013 – Ing. Daniele Corti

IL SISTEMA DECIMALE

Il sistema di numerazione decimale è quello utilizzato comunemente dall’uomo per fare i calcoli.

Questo sistema ha 10 simboli (cifre decimali) di base: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

Un numero decimale è una combinazione di cifre; a seconda della posizione la cifra assume un peso

differente secondo le potenze di 10 crescenti, a partire dalla posizione a destra (cifra meno

significativa).

Il sistema decimale è inoltre posizionale: il significato di ogni cifra dipende dalla sua posizione nella

sequenza che costituisce il numero da rappresentare (7465 è diverso da 6475).

1a posizione: la cifra viene moltiplicata per 1 (100).

2a posizione: la cifra viene moltiplicata per 10 (101).

3a posizione: la cifra viene moltiplicata per 100 (102).

Etc.

Esempio

Utilizzando la notazione posizionale, il numero 357,2510 può essere così espresso:

Peso 103 102 101 100 10-1 10-2

Cifra 8 3 5 7, 2 5

8357,2510 = 8*103 + 3*102 + 5*101 + 7*100 + 2*10-1 + 5*10-2 = 8000 + 300 + 50 + 7 + 0,2 + 0,05

Esempi

Rappresentiamo con l’abaco alcuni numeri in base 10:

Page 5: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

5 Copyright © 2013 – Ing. Daniele Corti

Osserviamo che una decina corrisponde a 10 unità semplici, che un centinaio corrisponde a 10 decine

ciascuna delle quali corrisponde a 10 unità semplici. Pertanto un centinaio corrisponde a 100 unità

semplici.

IL SISTEMA BINARIO

La codifica binaria si basa su un sistema di numerazione binario (base 2) in cui i simboli che

compongono l’alfabeto sono solamente 2 (lo 0 e l’1). Un sistema così fatto ha indubbiamente

l’importante vantaggio di poter rappresentare (e manipolare) facilmente i dati binari all’interno del

calcolatore. L’aritmetica binaria segue le stesse regole del sistema decimale. Per distinguere la base

utilizzata, viene utilizzato un pedice:

I numeri in base 10 saranno scritti come 46310 e 8.3210.

I numeri in base 2 saranno scritti invece come 10102 e 10112.

Attenzione che questi ultimi due numeri binari non si pronunciano, rispettivamente, mille-dieci e

mille-undici, ma, uno-zero-uno-zero e uno-zero-uno-uno, cioè scandendo cifra per cifra.

Il sistema binario è utilizzato dai calcolatori e altri dispositivi elettronici digitali per fare i calcoli.

CODIFICA BINARIA

Per dialogare con un computer è necessaria una tecnica che possa convertire le informazioni

rappresentate nel nostro sistema naturale (linguaggio di parole e numeri) in codici comprensibili al

computer.

La codifica binaria è la rappresentazione dell’informazione in un calcolatore, effettuata utilizzando

un alfabeto limitato a soli due simboli (0 e 1), a causa della capacità dei dispositivi elettronici (i

transistori) di un elaboratore di salvare solo cifre binarie (corrispondenti ai due possibili stati logici

di un circuito elettrico: aperto o chiuso).

L’informazione rappresentabile può essere di qualsiasi tipo:

1+1= 10

?????

impossibil

Page 6: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

6 Copyright © 2013 – Ing. Daniele Corti

numeri (interi con e senza segno, reali), caratteri alfanumerici, immagini, suoni, video, etc.

Nel nostro studio sulla codifica inizieremo a vedere le tecniche utilizzate per codificare i numeri interi

senza segno e con segno.

NB La memorizzazione e la rappresentazione dei numeri, pur utilizzando la logica binaria, non

funziona convertendo le singole cifre in Byte come per i caratteri ma trasforma direttamente i

numeri in binario.

CODIFICA BINARIA DEI NUMERI INTERI

In questa codifica i numeri, interi, vengono tradotti in sequenze binarie.

Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti.

Se i simboli sono numeri interi senza segno (numeri naturali), allora, i numeri saranno

compresi fra

0 e 255 (2n-1).

Se i simboli sono numeri interi con segno (numeri relativi) i numeri saranno compresi fra

-128 (-2n-1) e +127 (2n-1-1).

Page 7: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

7 Copyright © 2013 – Ing. Daniele Corti

RAPPRESENTAZIONE DEGLI INTERI SENZA SEGNO

La rappresentazione più diretta dei 2n interi tra 0 e 2n-1 è quella che utilizza la rappresentazione

binaria posizionale degli interi.

Ricordiamo che la notazione decimale posizionale, cui siamo abituati, è quella in cui il significato di

uno dei dieci simboli di base (le cifre 0,1,2,3,4,5,6,7,8,9) dipende dalla posizione di questo

all’interno della sequenza di cifre.

P. es. il numero 361 va interpretato come: 3 centinaia + 6 decine + 1 unità. Ovvero:

3*102 + 6*101 + 1*100

Se invece di usare le dieci cifre usuali ne usiamo solo due (0,1 rappresentabili in un circuito mediante

tensione alta e tensione bassa) avremo la possibilità di una rappresentazione posizionale in base due

in cui un numero è costituito unicamente da una sequenza di 0 e 1.

P.es.: 11010 va interpretato come

1*24 + 1*23 + 0*22 + 1*21 + 0*20

Ovvero, indicando con un apice 10 oppure 2 la rappresentazione in base 10 o 2 rispettivamente,

110102 = 2610

Questa possibilità è quella "naturale" per un computer perché le operazioni aritmetiche sono svolte

su dati rappresentati in registri (speciali circuiti) del processore sotto forma di un numero fisso di bit.

CONVERSIONE DA DECIMALE A BINARIO – CODIFICA

DI NUMERI NATURALI: DEC BIN

Vediamo come si converte un numero intero positivo in binario.

Metodo 1 (metodo pratico)

Esempio: convertire il numero 40 decimale in binario, sulla base di 8 bit.

4010 40 < 26 n = 6

Imposto la tabella a 8 bit, segnando i pesi binari per ogni cifra.

128 64 32 16 8 4 2 1 PESI

0 0 1 0 1 0 0 0 BIT

Page 8: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

8 Copyright © 2013 – Ing. Daniele Corti

Individuo quali pesi sommare fra loro al fine di ottenere il numero decimale 40; in corrispondenza di

questi pesi segno cifra 1, e altrove segno 0.

Ottengo:

001010002

E come si nota le prime due cifre più significative sono 0 e quindi è rispettato il calcolo che per

rappresentare il 40 bastano 6 bit, ma le memorie del calcolatore scelto è da 8 bit, e i bit li devo

considerare tutti e 8.

Metodo 2 (formale)

Per convertire un numero naturale N in binario occorre divide ripetutamente per la base 2 del sistema

binario e scrivere ordinatamente i valori dei resti ottenuti, a partire dalla posizione meno significativa.

Esempio: 4010

40 2

Page 9: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

9 Copyright © 2013 – Ing. Daniele Corti

1 1 1 1 1 1 1 1

20 0

10 0

5 0

2 1

1 0

0 1

Ottengo:

1010002 e a parte le due cifre a 0 più significative, coincide con il precedente risultato (a 8 bit).

Quindi, a questo risultato DEVONO essere aggiunti i 2 zeri più significativi.

CONVERSIONE DA BINARIO A DECIMALE DI NUMERI

NATURALI (DECODIFICA): BIN DEC

Vediamo come si converte un numero binario in intero positivo.

Metodo 1 (metodo pratico)

identico al caso DECBIN

Esempio (4 bit): 11102

8=23 4=22 2=21 1=20

1 1 1 0

Esempi importanti (n=8):

2n

-1 = 255

Page 10: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

10 Copyright © 2013 – Ing. Daniele Corti

0 1 1 1 1 1 1 1

1 0 0 0 0 0 0 0

2n-1

-1 = 127

2n-1

= 128

Metodo 2 (formale)

Notazione posizionale.

Esempio (4 bit): 11102

1*23 + 1*22 + 1*21 + 0*20 = 8 + 4 + 2 + 0 = 1410

Esempio (4 bit)

Facciamo l’esempio di un intero (senza segno) rappresentato in registri a 8 bit. Potrebbe essere:

1 1 1 1 1 1 1 0

pari a 254.

Se adesso sommiamo 3 (112) a questo numero dovremmo ottenere:

1 0 0 0 0 0 0 0 1

Cioè 257.

Page 11: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

11 Copyright © 2013 – Ing. Daniele Corti

Però la cella grigia non esiste nel registro del nostro processore. Quindi il bit corrispondente "si perde"

lasciando come risultato l'intero contenuto nelle sole celle bianche: 1 che corrisponde a 257 mod 28

(mod è l’operatore matematico che calcola il resto di una divisione, per es. 20 mod 2 = 0).

RAPPRESENTAZIONE DEGLI INTERI CON SEGNO

CODIFICA IN MODULO E SEGNO

Se abbiamo a disposizione n bit e vogliamo rappresentare interi negativi e positivi (in numero uguale),

la soluzione più semplice è quella di usare:

un bit dedicato al segno (per esempio 1 per valori maggiori o uguali a zero e, 0 per valori

minori di zero);

n-1 bit dedicati al modulo, codificati con la usale rappresentazione in base 2 (codifica pesata

dei numeri naturali).

In questo caso, allora, potremo rappresentare 2n-1 interi positivi (da +0 a 2n-1 - 1) e 2n-1 interi negativi

(da -0 a -2n-1 + 1). Da notare che in tal modo esisterebbero due diverse rappresentazioni dello zero e

il range dei positivi sarebbe lo stesso dei negativi. In totale 2n – 1 valori diversi (lo zero contato due

volte).

Questo metodo di rappresentazione non è il più agevole in quanto, oltre ad avere un piccolo spreco

di una configurazione, è difficilmente implementabile circuitalmente.

Per tali motivi, per implementare l’aritmetica in modulo 2n si utilizza, in genere, la tecnica detta

“complemento a due”.

In questa tecnica, gli interi con segno tra -2n-1 e 2n-1-1 hanno un’unica rappresentazione mediante

sequenze di n bit consecutive nell’aritmetica modulo 2n.

CODIFICA IN COMPLEMENTO A DUE

Per ottenere la rappresentazione complemento a due di un numero negativo, basta invertire tutti i bit

della rappresentazione binaria del numero positivo (gli zeri diventano uno e gli uno diventano zero)

e poi sommare uno al risultato. La spiegazione di questo algoritmo è semplice: con la notazione

complemento a due vogliamo poter fare la somma tra numeri positivi e negativi esattamente con lo

stesso algoritmo (circuiti) che manipola la somma tra numeri positivi. Questo implica che se

Page 12: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

12 Copyright © 2013 – Ing. Daniele Corti

sommiamo ad un numero positivo il corrispondente negativo dobbiamo trovare zero. Facendo

riferimento alla discussione sopra accennata, si vede che se si somma ad un numero positivo la

sequenza di bit invertiti si ottiene un numero fatto solo dalle cifre 1. Aggiungendo un ulteriore 1 si

ottiene zero (con quel numero di bit). Da cui l’algoritmo del complemento a due.

La tabella seguente mostra quale è l’associazione tra sequenze di 8 bit ed valori interi con segno nella

rappresentazione in complemento a 2.

sequenza di bit interi con segno complemento a 2

0000 0000 0 0

0000 0001 1 1

... ... ...

0111 1110 126 126

0111 1111 127 127

1000 0000 -0 -128

1000 0001 -1 -127

... ... ...

1111 1111 -127 -1

TABELLA CONVERSIONE BIN POS/DEC

BIN (4 bit) DEC

0 0 0 0 0

0 0 0 1 1

0 0 1 0 2

0 0 1 1 3

0 1 0 0 4

0 1 0 1 5

0 1 1 0 6

0 1 1 1 7

1 0 0 0 8

1 0 0 1 9

Page 13: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

13 Copyright © 2013 – Ing. Daniele Corti

1 0 1 0 10

1 0 1 1 11

1 1 0 0 12

1 1 0 1 13

1 1 1 0 14

1 1 1 1 15

NUMERI INTERI CON SEGNO

Utilizziamo la notazione modulo-segno. Abbiamo delle memorie RAM da 4 bit. Quanti numeri interi

con segno possiamo memorizzare:

2n = 24 = 16 numeri che vanno da (-2n-1 = -8) a (+2n-1-1 = +7)

BIN (4 bit) DEC

1 0 0 0 -8

1 0 0 1 -7

1 0 1 0 -6

1 0 1 1 -5

1 1 0 0 -4

1 1 0 1 -3

1 1 1 0 -2

1 1 1 1 -1

0 0 0 0 0

0 0 0 1 +1

0 0 1 0 +2

0 0 1 1 +3

0 1 0 0 +4

0 1 0 1 +5

0 1 1 0 +6

0 1 1 1 +7

SEGNO

-

+

CMP2

+

-

CMP2

Page 14: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

14 Copyright © 2013 – Ing. Daniele Corti

Il bit più significativo indica il segno: 1 per negativi e 0 per positivi. I bit restanti sono utilizzati per

la rappresentazione del modulo (numero senza segno).

La tecnica del complemento a 2 è utilizzata per ricavare il numero positivo (o negativo) dal

corrispondente numero negativo (o positivo). Per esempio conoscendo il codice binario di +5 posso

ricavare il codice binario di -5.

Notate che la cifra binaria più significativa da informazione sul segno del numero; se è 0 il numero è

positivo, mentre se è 1 il numero è negativo.

Esempio: troviamo il complemento a 2 del numero +4.

8 4 2 1 PESI

0 1 0 0 NUMERO

1 1 RIPORTI

1 0 1 1 CMP1

1 +

1 1 0 0 CMP2

Il risultato, infatti, coincide con il numero -4.

TABELLA CONVERSIONE BIN CON SEGNO/DEC

BIN (5 bit) DEC

1 0 0 0 0 -16

1 0 0 0 1 -15

1 0 0 1 0 -14

1 0 0 1 1 -13

1 0 1 0 0 -12

1 0 1 0 1 -11

1 0 1 1 0 -10

1 0 1 1 1 -9

1 1 0 0 0 -8

1 1 0 0 1 -7

1 1 0 1 0 -6

Page 15: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

15 Copyright © 2013 – Ing. Daniele Corti

1 1 0 1 1 -5

1 1 1 0 0 -4

1 1 1 0 1 -3

1 1 1 1 0 -2

1 1 1 1 1 -1

0 0 0 0 0 0

0 0 0 0 1 +1

0 0 0 1 0 +2

0 0 0 1 1 +3

0 0 1 0 0 +4

0 0 1 0 1 +5

0 0 1 1 0 +6

0 0 1 1 1 +7

0 1 0 0 0 +8

0 1 0 0 1 +9

0 1 0 1 0 +10

0 1 0 1 1 +11

0 1 1 0 0 +12

0 1 1 0 1 +13

0 1 1 1 0 +14

0 1 1 1 1 +15

CODIFICA DI NUMERI DECIMALI A VIRGOLA FISSA

Per la codifica BINARIA POSIZIONALE di numeri float (razionali o reali) in virgola fissa, si alloca

un numero prefissato di bit per la parte intera, e uno per la parte frazionaria. Esempio, 2 Byte, uno

per la parte intera e uno per quella frazionaria.

Esempio: 39.34510 = 00100111.010110002

Page 16: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

16 Copyright © 2013 – Ing. Daniele Corti

DEC BIN

Dato un numero decimale, è necessario distinguere la parte intera da quella frazionaria:

Page 17: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

17 Copyright © 2013 – Ing. Daniele Corti

N = I,F

Metodo 1 (formale)

Parte intera

Per convertire la parte intera I di un numero N si usa la stessa tecnica vista per i numeri interi, cioè,

dividere ripetutamente per 2 e scrivere ordinatamente i valori dei resti ottenuti, a partire dalla

posizione meno significativa.

Parte frazionale

Page 18: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

18 Copyright © 2013 – Ing. Daniele Corti

Page 19: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

19 Copyright © 2013 – Ing. Daniele Corti

Metodo 2 (pratico)

Parte intera: vedi BINDEC

Parte frazionale: vedi BINDEC

BIN DEC

Convertire in decimale il numero binario N = 101011.10112

25=32 24=16 23=8 22=4 21=2 20=1 2-1= 1/2 2-2=1/4 2-3=1/8 2-4=1/16

1 0 1 0 1 1 1 0 1 1

N = 1*25 + 0*24 + 1*23 + 0*22 + 1*21 + 1*20 + 1*2-1 + 0*2-2 + 1*2-3 + 1*2-4 = 43.687510

Page 20: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

20 Copyright © 2013 – Ing. Daniele Corti

Avendo C cifre a disposizione si possono rappresentare 2C numeri interi. Se, quindi,

abbiamo numeri interi senza segno (numeri naturali) possiamo rappresentare i numeri da 0 a

(2c

- 1), e se sono numeri interi con segno da -2c-1

a (2c-1

- 1).

Esempio:

se C = 4: interi naturali: da 0 a 24-1=15; interi con segno: da -23=-8 a 23-1=7.

Per rappresentare un certo numero N:

C >= log2N

Esempio:

N=4 C>=log24 C=2

N=8 C>=log28 C=3

NUMERAZIONE IN VIRGOLA MOBILE

La codifica in virgola fissa non è efficiente quando si deve lavorare con numeri con valore assoluto

molto grande o molto piccolo.

I numeri molto grandi richiedono un numero molto elevato di bit. Per esempio, la massa del sole in

grammi è pari a circa 2 x 10+33 ≅ 2+111; questo numero richiederebbe n ≥ 112 bit solo per codificare

la parte intera.

Numeri molti piccoli richiedono un numero molto elevato di bit per rappresentare la parte frazionaria.

Per esempio, la massa dell’elettrone in grammi è pari a circa 9 x 10-28 ≅ 2-90; questo numero

richiederebbe n ≥ 90 bit solo per codificare la parte frazionaria.

Per poter codificare entrambi i numeri dei precedenti due esempi sarebbero necessari almeno

1+112+90 = 203 bit: le celle di memoria degli attuali calcolatori ne contengono molti meno.

Per evitare gli inconvenienti della codifica in virgola fissa, nei calcolatori si usa una codifica basata

sula rappresentazione dei numeri reali in notazione esponenziale (usata comunemente in fisica,

chimica, etc.).

Ogni numero reale X può essere espresso in notazione esponenziale come:

M x BE

Dove:

M è un numero reale, detto matissa.

Page 21: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

21 Copyright © 2013 – Ing. Daniele Corti

B è un numero naturale maggiore di 1, detto base.

E è un numero intero, detto esponenziale.

Nella pratica si usa comunemente B = 10.

Per esempio, le masse del sole e dell’elettrone negli esempi precedenti sono espressi in notazione

esponenziale con B = 10.

Ogni numero reale può essere espresso in notazione esponenziale in infiniti modi. Per esempio:

Le scelte più comode sono quelle che richiedono il minor numero di cifre pari a 0 prima o dopo la

virgola, in quanto consentono di rappresentare un dato valore con il minor numero possibile di cifre

per la mantissa. Nell’esempio precedente:

Il formato standard per la rappresentazione dei numeri in virgola mobile è chiamato IEEE 754. Con

parole di 32 bit, un numero in virgola mobile viene rappresentato come segue:

Page 22: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

22 Copyright © 2013 – Ing. Daniele Corti

Page 23: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

23 Copyright © 2013 – Ing. Daniele Corti

Page 24: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

24 Copyright © 2013 – Ing. Daniele Corti

Page 25: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

25 Copyright © 2013 – Ing. Daniele Corti

Page 26: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

26 Copyright © 2013 – Ing. Daniele Corti

APPROFONDIMENTO - NUMERAZIONE IN VIRGOLA

MOBILE

Page 27: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

27 Copyright © 2013 – Ing. Daniele Corti

Rappresentazione dei numeri con la virgola mobile - cifre significative.

Page 28: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

28 Copyright © 2013 – Ing. Daniele Corti

Page 29: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

29 Copyright © 2013 – Ing. Daniele Corti

I numeri del sistema decimale con la virgola mobile (floating point) sono i numeri reali rappresentati

in base 10 mediante notazione "scientifica" ovvero moltiplicati o divisi per un opportuna potenza di

10 in modo da poter essere scritti in modo standardizzato come:

x.yxwt 10e oppure 0.xyxwt 10 e+1. Il coefficiente della potenza di 10 viene chiamato mantissa del

numero. Nel primo caso la mantissa è x.yxwt, mentre nel secondo è 0.xyxwt. La rappresentazione

mediante virgola mobile offre due principali vantaggi su altre possibili alternative: rende più semplice

automatizzare le operazioni aritmetiche e soprattutto permette di eliminare qualsiasi ambiguità tra

zeri significativi e posizionali.

Per illustrare quest'ultimo punto cerchiamo di capire come interpretare il valore delle cifre del numero

15000. Chiaramente, si tratta di un numero in cui ci sono 1 decina di migliaia e 5 migliaia. Però,

non è chiaro se i tre zeri che seguono vadano interpretati come "esattamente zero centinaia, zero

decine e zero unità" oppure come indicatori del valore di decine di migliaia e migliaia delle cifre

Page 30: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

30 Copyright © 2013 – Ing. Daniele Corti

precedenti ma senza per questo implicare che il numero in questione corrisponda ad una conoscenza

esatta anche di centinaia, decine e unità. Nel primo caso, diremo che si tratta di zeri "significativi” e

che le cifre significative del numero sono in tutto 5. Nel secondo caso, gli zeri servono solo ad

attribuire il giusto valore posizionale a 1 e 5 ma il numero di cifre significative è 2. Con la

rappresentazione in virgola mobile si definiscono significative tutte le cifre (zeri inclusi) che siano a

destra della prima cifra diversa da zero.

In notazione binaria il concetto di numero a virgola mobile si estende in modo diretto. Inoltre, poiché

le cifre possono essere solo 0 oppure 1, se si opta per la forma "normalizzata” 1.xyzt 2e, in cui la

mantissa 1.xyzt inizia sempre per 1, possiamo omettere di indicare l'1 prima del punto risparmiando

un simbolo per rappresentare la mantissa.

Per standardizzare la rappresentazione di numeri binari floating point è necessario decidere quanti bit

utilizzare e come ripartirli tra mantissa ed esponente. Esistono moltissime possibili soluzioni e, in

principio, i linguaggi di programmazione dovrebbero essere "neutri" rispetto alle convenzioni di

rappresentazione. Di fatto, fin dagli ultimi '80 anni, si è imposto lo standard IEEE 754 che

prevede almeno due rappresentazioni:

1. una "corta" che utilizza 4 Byte, ovvero 32 bit ripartiti in: 1 bit per il segno della mantissa, 23

bit per la mantissa, senza il primo 1 (bit nascosto), ed 8 bit per l' esponente espresso come

intero binario nella forma con bias 127.

2. una "più lunga" o "a precisione doppia" che utilizza 8 Byte (64 bit) ripartiti in: 1 bit per il

segno della mantissa, 52 bit per la mantissa, senza il primo 1 (bit nascosto), ed 11 bit per l'

esponente espresso come intero binario nella forma con bias 1023.

Inoltre, due dei possibili valori dell’esponente sono in realtà riservati per esprimere dei valori speciali

risultanti da possibili operazioni aritmetiche mal definite come divisioni per zero o rapporti del tipo

0/0, nonché per rappresentare lo zero e un insieme di numeri "denormalizzati" per cui non vale la

convenzione del bit nascosto.

In dettaglio, per numeri a 32 bit la codifica è la seguente. Indichiamo con S, M ed E i campi di 1, 23

e 8 bit riservati alla codifica di segno (della mantissa), mantissa ed esponente.

Il campo "esponente", E, dei floating assume valori tra 0 e 255.

I valori di E da 1 a 254 permettono di esprimere numeri normalizzati in cui il primo bit (nascosto,

cioè non rappresentato esplicitamente) della mantissa è 1 (a sinistra del punto) e gli esponenti vanno

da -126 a +127. In altre parole, il valore del numero rappresentato da S,M ed E sarà (-1)S 1.M 2E-127.

Perciò il più piccolo numero normalizzato è 1.000...000 2 -126 che corrisponde approssimativamente

a 10 -38, mentre il più grande (1.111...111 2 +127) corrisponde a circa 10 +38. Se il campo E è zero e

M è zero, si ha lo zero, di cui esiste un valore positivo ed uno negativo a seconda del valore di S (0 o

Page 31: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

31 Copyright © 2013 – Ing. Daniele Corti

1). Zero positivo e zero negativo devono essere trattati dai linguaggi di programmazione come

perfettamente equivalenti.

Se il campo E è zero mentre M è non nullo si tratta di numeri in cui la mantissa va interpretata come

0.M e la potenza di 2 come -126. Questi numeri "denormalizzati" permettono di rappresentare

valori compresi tra circa 10-45 e 10-37 al prezzo di un crescente perdita di precisione (diminuzione

delle cifre significative) man mano che ci si avvicina allo zero.

Se il campo E è 255 e M è 0 si considera il valore come segnale di un "overflow" ed il valore viene

indicato come + o - infinito a seconda del segno.

Infine, se il campo E è 255 ed M è non nullo, si attribuisce a tale sequenza il valore NaN (Not a

Number) che solitamente sta a segnalare il risultato di operazioni aritmetiche non definite come per

esempio il calcolo del rapporto 0/0.

In modo analogo per floating a 64. In questo caso il campo esponente è di 11 bit (e la rappresentazione

è mediante interi con bias 1023) mentre quello mantissa diviene di 52 bit (con in più il bit nascosto

per i numeri normalizzati).

Da notare che i valori speciali NaN (o nan) e +/- infinito dello standard IEEE non sono intesi come

elementi dell'insieme dei numeri reali ma come valori speciali da utilizzare nella programmazione

per avviare eventuali procedure di manipolazione delle condizioni di errore. Talvolta un compilatore

può generare automaticamente codice di gestione delle condizioni di errore nascondendo al

programmatore la possibilità di accedere ai valori speciali dello standard IEEE-754. Tuttavia,

normalmente, esistono opzioni del compilatore che permettono di evitare la gestione automatica.

Infine va aggiunto che lo standard prevede quattro diversi tipi di arrotondamento nell’ esecuzione

delle operazioni tra numeri a virgola mobile:

arrotondamento al numero più vicino (il default)

arrotondamento verso +Inf

arrotondamento verso 0

arrotondamento verso -Inf

L'arrotondamento al numero più vicino funziona nel seguente modo:

una volta determinata il numero di cifre del risultato da tenere;

si incrementa l' ultima cifra di 1 se la cifra successiva è > 5 o 5 seguito da almeno una cifra

non nulla;

si lascia invariata l' ultima cifra se la successiva è < 5;

se la cifra successiva all' ultima è 5 seguito da zeri si incrementa l' ultima di 1 se è dispari

mentre la si lascia invariata se pari.

Page 32: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

32 Copyright © 2013 – Ing. Daniele Corti

Esempi:

6.826 -> 6.83

6.823 -> 6.82

6.82501 -> 6.83

6.82500 -> 6.82

6.855 00 -> 6.86

Conseguenze della rappresentazione dei reali sulle proprietà dell'aritmetica

Le principali caratteristiche della rappresentazione dei reali che influenzano le proprietà

dell'aritmetica sul computer sono:

i) il numero finito di cifre significative,

ii) il numero finito di reali,

iii) la loro non uniformità e

iv) la rappresentazione mediante una base diversa da quella usuale ( 2 invece di 10).

Vediamo più da vicino come questi fattori intervengono nel caso della rappresentazione mediante 32

bit. Le modifiche per il caso a 64 bit sono ovvie e lasciate come esercizio.

La proprietà i) implica che, dato un numero rappresentato sul computer esiste più di un numero B

(non solo B=0) che soddisfa l’equazione

A + B = A

è sufficiente che B sia più piccolo di A in valore assoluto per più di un fattore 2-23 perché sommare A

a B divenga equivalente a sommare 0 ad A.

Rapportando i valori alla più usuale base 10, possiamo considerare che una mantissa di 24 cifre

binarie significative (incluso il bit nascosto) corrisponde approssimativamente a 7 cifre decimali

significative. Se sommiamo due numeri decimali rappresentati con sole con 7 cifre significative che

differiscono per più di 7 ordini di grandezza, il risultato (entro le sette cifre significative) è

indistinguibile dal maggiore tra i due addendi.

Si definisce precisione macchina (e si indica spesso con la lettera greca epsilon) la distanza tra 1.0 ed

il successivo numero con virgola rappresentabile esattamente.

La proprietà ii) è all’origine della possibilità di uscire al di fuori dell’intervallo dei valori

rappresentabili mediante le operazioni aritmetiche. Se lo "sfondamento" è nella direzione di andare

al di là del massimo valore assoluto possibile, si parla di overflow, mentre se si arriva a valori

inferiori al più piccolo valore denormalizzato diverso da zero, si parla di underflow e il

risultato viene considerato esattamente uguale a zero.

Page 33: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

33 Copyright © 2013 – Ing. Daniele Corti

La proprietà iii) discende anch'essa dalla precisione finita: la minima distanza non nulla tra due reali

è dell’ordine di 10 -45 attorno allo zero mentre diviene dell’ordine di 10 31 in prossimità dell'estremo

superiore dell’insieme.

Infine occorre aver coscienza anche del punto iv) per poter comprendere come mai conti fatti a partire

da costanti numeriche descrivibili esattamente con un numero finito di cifre significative in notazione

decimale possano corrispondere a calcoli approssimati in corrispondenza di valori per cui non esiste

una conversione binaria dotata di un numero finito di cifre significative.

Anche qui un esempio può aiutare a capire. Consideriamo il risultato della divisione 1/10.

In base 10 è esprimibile con un numero finito di cifre decimali diverse da zero (1/10 = 0.100000...10).

Pertanto la rappresentazione finita ottenuta troncando gli zeri finali non introduce nessuna inesattezza

nella rappresentazione decimale.

In base 2 lo stesso numero è rappresentato da 0.000110011001100110011... 2 cioè corrisponde ad una

rappresentazione periodica di periodo 0011 (e antiperiodo 0). Se abbiamo solo n bit per rappresentare

questo numero dovremo necessariamente approssimarlo (troncando o arrotondando). Una

conseguenza pratica importante è che, mentre in aritmetica decimale con un numero finito di cifre i

prodotti n*0.1 (n=1, 2, 3, ...) assumono periodicamente valori in cui la parte decimale è tutta nulla, in

aritmetica binaria con un numero finito di cifre questo non è più vero.

Da questa peculiarità della rappresentazione dei reali si ricava che possiamo considerare un numero

con virgola del computer come un'approssimazione del valore vero a meno di un errore relativo,

dipendente dal numero, maggiorato dalla precisione macchina (a rigore, nel caso di aritmetica con

arrotondamento, l'errore relativo è maggiorato da epsilon/2 a meno di correzioni in epsilon2, tuttavia,

se siamo interessati all' ordine di grandezza dell'errore, la differenza tra epsilon ed epsilon/2 è

inessenziale sia per la rappresentazione a 32, sia per quella a 64 bit). Quindi in generale potremo

scrivere:

xcomp=x(1+ex) dove |ex|<epsilon dipende da x.

Page 34: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

34 Copyright © 2013 – Ing. Daniele Corti

SISTEMI ESADECIMALI E OTTALI

Page 35: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

35 Copyright © 2013 – Ing. Daniele Corti

Page 36: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

36 Copyright © 2013 – Ing. Daniele Corti

Page 37: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

37 Copyright © 2013 – Ing. Daniele Corti

ESERCIZI

Esercizio 1 - codifica dei numeri positivi

Codificate i seguenti numeri nella corrispondente rappresentazione decimale:

(numeri nella rappresentazione binaria)

o 1012 = 510

o 10112 = 1110

o 11012 = 1310

o 100000012 = 12910

o 110011002 = 20410

o 111111112 = 25510

(numeri nella rappresentazione ottale)

o 678 = 5510

o 1018 = 6510

(numeri nella rappresentazione esadecimale)

o 6716 = 10310

o 10116 = 25710

o ac316 = 275510

o b2d16 = 286110

Codificate i seguenti numeri nella corrispondente rappresentazione binaria:

o 810 = 10002

o 710 = 1112

o 6010 = 1111002

o 28110 = 1000110012

Verificate i risultati convertendoli nella rappresentazione decimale.

Dato il numero 86210 qual è il numero minimo di bit che si devono usare per la sua

rappresentazione binaria?

Numero minimo di bit = 10 (86210 = 11010111102)

Da base 10 a base 2 - Conversione da decimale a binario Supponiamo di avere un numero decimale per esempio il 2710. Rappresentiamolo in notazione binaria.

Page 38: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

38 Copyright © 2013 – Ing. Daniele Corti

Applichiamo il metodo delle divisioni successive; dividiamo per 2 la parte intera, e teniamo il resto; dividiamo ancora per 2 la parte intera ottenuta dalla precedente divisione, e teniamo il resto. Proseguiamo in questo modo finché non si ottiene il valore 0 come risultato della divisione:

27:2 = 13 resto = 1 13:2 = 6 resto = 1 6:2 = 3 resto = 0 3:2 = 1 resto = 1 1:2 = 0 resto = 1

Se mettiamo in ordine i resti ottenuti partendo dall'ultimo e mettendolo come primo a sinistra, otteniamo: 11011 che è un numero binario che è uguale a 2710.

Da base 2 a base 10 - Conversione da binario a decimale Utilizziamo la notazione posizionale per convertire un numero (intero) da binario a decimale. Occorre moltiplicare ogni cifra binaria per 2n, dove n rappresenta la posizione della cifra (n=0 per la prima cifra a destra). Dato il numero binario 1001110, moltiplichiamo ogni cifra per il rispettivo peso:

Peso 26 25 24 23 22 21 20

Cifra 1 0 0 1 1 1 0

1 * 26 = 64 (bit più significativo) 0 * 25 = 0 0 * 24 = 0 1 * 23 = 8 1 * 22 = 4 1 * 21 = 2 0 * 20 = 0 (bit meno significativo) Quindi sommiamo i risultati ottenuti e otteniamo il numero decimale: 64 + 0 + 0 + 8 + 4 + 2 + 0 = 7810

A questo indirizzo trovate un applicativo online per effettuare le conversioni automaticamente (da utilizzare come verifica dei risultati da voi ottenuti): http://www.new-software.ch/temp/codici-numerici.php

Page 39: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

39 Copyright © 2013 – Ing. Daniele Corti

TABELLA DI CONVERSIONE

Utilizziamo questa tabella che consente la conversione di un numero intero compreso fra 0 e 15 in

un numero binario.

DECIMALE BINARIO

0 0 0 0 0

1 0 0 0 1

2 0 0 1 0

3 0 0 1 1

4 0 1 0 0

5 0 1 0 1

6 0 1 1 0

7 0 1 1 1

8 1 0 0 0

9 1 0 0 1

10 1 0 1 0

11 1 0 1 1

Page 40: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

40 Copyright © 2013 – Ing. Daniele Corti

12 1 1 0 0

13 1 1 0 1

14 1 1 1 0

15 1 1 1 1

ESERCIZI

CONVERSIONE

Per rappresentare in binario un numero in decimale di quanti bit ho bisogno?

C <= 2n

C = Numero di combinazioni

n = numero_bit

Esempio 1

Quanti bit ho bisogno per rappresentare il numero decimale 120?

120 <128=27

Ho bisogno di almeno 7 bit.

Esempio 2

Se utilizzo 10 bit quanti combinazioni posso creare?

210 = 1024

Esempio: numero reale (virgola fissa)

Page 41: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

41 Copyright © 2013 – Ing. Daniele Corti

27,7510

16 8 4 2 1 0,5 0,25 0,125 0,0625

27,437510

16 8 4 2 1 0,5 0,25 0,125 0,0625

1 1 0 1 1 0 1 1 1

27 / 2

13,5 13 1

6,5 6 1

3 3 0

1,5 1 1

0,5 0 1

NB: 11011 è un numero binario palindromo

0,4375 x 2

0,875 0,875 0

1,75 0,75 1

1,5 0,5 1

1,0 0 1

RISULTATO

SENZA PARTE

INTERA

RISULTATO CON

PARTE INTERA

PARTE INTERA

RISULTATO CON

PARTE INTERA

RISULTATO SOLO

CON PARTE

INTERA

RESTO DELLA

DIVISIONE

Page 42: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

42 Copyright © 2013 – Ing. Daniele Corti

Page 43: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

43 Copyright © 2013 – Ing. Daniele Corti

Esercizi da svolgere

CODIFICA: DA DEC A BIN

ES1: 4310 N2 ?

43:2= 1010112

43 2

21 1

10 1

5 0

2 1

1 0

0 1

DECODIFICA: DA BIN A DEC

ES2: 1101102 N10 ?

Page 44: CODIFICA NUMERICA · In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli

Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

44 Copyright © 2013 – Ing. Daniele Corti

32 16 8 4 2 1

1 1 0 1 1 0

32+16+4+2=5410