Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
NUMERICA
Ing. Daniele Corti
www.ingdanielecorti.it
Tutti i diritti sono riservati a norma di legge e a norma delle convenzioni internazionali.
Ver.1.0
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
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.
2
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
Figura 1 - L'abaco
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.
3
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
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:
4
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
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. 1+1=
I numeri in base 2 saranno scritti invece come 10102 e 10112. 10 ?????
impossibil
e
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:
5
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
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.
6
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
128 64 32 16 8 4 2 1 PESI
0 0 1 0 1 0 0 0 BIT
7
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
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.
8
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
Esempio: 4010
40 2
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.
n 1 1 1 1 1 1 1 1
2 -1 = 255
9
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
n-1
2 -1 = 127 0 1 1 1 1 1 1 1
n-1
2 = 128 1 0 0 0 0 0 0 0
Metodo 2 (formale)
Notazione posizionale.
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.
10
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
Cioè 257.
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).
11
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
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
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
12
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
1 0 0 1 9
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
+ 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
13
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
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.
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
15
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
DEC BIN
Dato un numero decimale, è necessario distinguere la parte intera da quella frazionaria:
16
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
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
17
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
18
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
Metodo 2 (pratico)
Parte intera: 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
19
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
c c-1 c-1
(2 - 1), e se sono numeri interi con segno da -2 a (2 - 1).
Esempio:
se C = 4: interi naturali: da 0 a 24-1=15; interi con segno: da -23=-8 a 23-1=7.
C >= log2N
Esempio:
N=4 C>=log24 C=2
N=8 C>=log28 C=3
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:
21
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
22
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
23
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
24
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
25
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
26
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
27
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
28
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
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
29
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
cifre 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
30
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
seconda del valore di S (0 o 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.
31
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
Esempi:
6.826 -> 6.83
6.823 -> 6.82
6.82501 -> 6.83
6.82500 -> 6.82
6.855 00 -> 6.86
32
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
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 epsilon 2,
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.
33
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
34
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
35
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
36
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
ESERCIZI
Esercizio 1 - codifica dei numeri positivi
37
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
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.
Peso 26 25 24 23 22 21 20
Cifra 1 0 0 1 1 1 0
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
38
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
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
12 1 1 0 0
39
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
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
120 <128=27
Esempio 2
Se utilizzo 10 bit quanti combinazioni posso creare?
210 = 1024
Esempio: numero reale (virgola fissa)
27,7510
40
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
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
41
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
42
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
Esercizi da svolgere
43 2
21 1
10 1
5 0
2 1
1 0
0 1
43
Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica
32 16 8 4 2 1
1 1 0 1 1 0
32+16+4+2=5410
44
Copyright © 2013 – Ing. Daniele Corti