CODIFICA NUMERICA Ing. Daniele Corti

Pagina creata da Raffaele Valenti
 
CONTINUA A LEGGERE
CODIFICA NUMERICA Ing. Daniele Corti
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.3.0 – 03/09/2020
CODIFICA NUMERICA Ing. Daniele Corti
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.
        o Codifica/decodifica di numeri decimali in notazione virgola fissa.
        o Codifica/decodifica di numeri decimali in notazione virgola mobile NON FARE.
  Sistemi esadecimali e ottali.
  Esercizi.

                                                                                                  2
                               Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

                 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.

                                                                                                     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= 10
       I numeri in base 2 saranno scritti invece come 10102 e 10112.                     ?????
                                                                                       impossibile

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.

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).

                                                                                                     6
                                  Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

RAPPRESENTAZIONE DEGLI INTERI SENZA SEGNO
La rappresentazione più diretta dei 2 n 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

                                                                                                              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) – metodo delle divisioni successive
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.

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 DECBIN

Esempio (4 bit): 11102

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

Esempi importanti (n=8):

        n
       2 -1 = 255
                                   1          1        1          1        1   1         1        1

                                                                                                       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): 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.

                                                                                                          10
                                       Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

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

                                                                                                        11
                                  Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

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.

Nel prossimo capitolo verranno proposti degli esempi.

La tabella seguente mostra quale è l’associazione tra sequenze di 8 bit e 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

                                                                                                     12
                                  Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

                                     1     0      0     0        8
                                     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

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
           CMP2                      0     0      0     0        0                CMP2
                                     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
                                                                                                     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.

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

                                                                                                          14
                                    Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

                                  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
Si tratta di rappresentare un numero binario con la virgola, ad esempio 1001,101 che non si legge
“mille e uno virgola cento e uno” ma “uno zero zero uno virgola uno zero uno”. Per la codifica di
un numero decimale in binario si deve adottare per la parte intera la stessa tecnica già illustrata delle
divisioni successive, mentre per la parte frazionale occorrerà adottare una nuova tecnica basata sulle
moltiplicazioni successive. Attraverso il seguente esempio si analizzata questa nuova tecnica:
si converta il seguente numero in binario:
                                                   39,625

                                                                                                      15
                                  Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

Parte intera: divisioni successive salvandone il resto

                                                           /
                                                      39        2
                                                               resti
                                                      19        1
                                                       9        1
                                                       4        1
                                                       2        0
                                                       1        0
                                                       0        1

Si ottiene quindi:
                                                3910 = 1001112

Parte frazionale:
Si costruisce una tabella di tre colonne: nella prima riga (intestazione) occorre riportare la parte
frazionale del numero da trasformare (0,625) e la base (2).
Si moltiplica tale parte frazionale (0,625) per 2 e si ottiene 1,25 che deve essere scritto nella
colonna centrale (sotto al 2). Di quest’ultimo numero si prende la parte intera (1) e la si scrive nella
colonna di destra; la parte frazionale (0,25) la si riscrive nella colonna di sinistra.
Quest’ultimo numero (0,25) viene a sua volta moltiplicato per 2 ottenendo 0,5 da scrivere nella
colonna centrale: la parte intera (0) viene riportata nella colonna di destra e la parte frazionale (0,5)
nella colonna di sinistra.
Quest’ultimo numero (0,5) viene a sua volta moltiplicato per 2 ottenendo 1 da scrivere nella
colonna centrale: la parte intera (1) viene riportata nella colonna di destra e la parte frazionale (0,0)
nella colonna di sinistra.
La procedura si conclude quando, nella colonna di sinistra, il numero ottenuto è pari a 0.
                                                  X
                                         0,625         2
                                         0,25         1,25             1
                                          0,5          0,5             0
                                          0,0          1,0             1
Il numero in binario è quello della colonna di destra, e va letto dall’alto verso il basso:
                                                                                                      16
                                   Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

                                                0,62510 = 0,1012

Naturalmente questa procedura di moltiplicazioni successive può andare avanti all’infinito (non
riuscendo a trovare numero che moltiplicato per 2 dia 1. In questo caso occorre arrestarsi ad un
certo punto e approssimare il risultato.
Si provi a codificare il seguente numero: 0,345
                                                  X
                                         0,345          2
                                           0,69        0,69        0
                                           0,38        1,38        1
                                           0,76        0,76        0
                                           0,52        1,52        1
                                           0,04        1,04        1

                                             0,34510 = 0,010112
Il risultato binario ottenuto è un’approssimazione a 5 cifre binarie del numero decimale dato.

Esempio: 57,375
                                                  57          2
                                                  28          1
                                                  14          0
                                                  7           0
                                                  3           1
                                                  1           1
                                                  0           1

                                         0,375          2
                                           0,75        0,75        0
                                           0,5         1,5         1
                                            0           1          1

Il risultato è quindi:
                                         57,37510 = 100111,0112

                                                                                                      17
                                   Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

Esempio
Codificare in binario il seguente numero: 43,6875

Esempio
Codificare in binario il seguente numero: 0,025

                                         0,025 circa= 0,0000011

DECODIFICA DI NUMERI DECIMALI
La decodifica di un numero binario in decimale può essere svolta utilizzando la stessa tecnica
posizionale impiegata per i numeri naturali.
Per esempio: 100111,010112

Pos       5       4       3       2        1       0               -1       -2     -3        -4       -5
Pesi     25      24       23      22      21      20              2-1      2-2     2-3      2-4       2-5
Pesi    32       16       8       4        2       1              0,5      0,25   0,125 0,0625 0,03125
BIN       1       0       0       1        1       1       ,       0        1       0        1        1

                                                                                                            18
                                   Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

Nella notazione posizionale occorre riportare per ogni cifra il corrispondente peso. Per la parte
intera, spostandosi a sinistra, i pesi crescono secondo potenze di 2 n dove n è la posizione del bit (0,
1, 2, 3, 4, etc.); per la parte frazionale, spostandosi a destra, i pesi (ovviamente) decrescono secondo
potenze di 2-n dove -n è la posizione del bit (-1, -2, -3, -4, -5, etc.).
In conclusione i pesi si possono calcolare in questo modo: per la parte intera partendo dal peso 1,
spostandosi a sinistra, raddoppiano (1, 2, 4, 8, 16, 32, etc.); per la parte frazionale partendo da 1,
spostandosi a destra, dimezzano (0,5; 0,25; 0,125; etc.).
A questo punto basta sommare i pesi corrispondenti ai bit impostati a 1:
                                32 + 0,25 + 0,0625 + 0,03125 = 32,34375

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. Ad esempio, 1
Byte per la parte intera e un altro Byte per quella frazionaria.
Per esempio: 39,34510 = 00100111,010110002

CODIFICA DI NUMERI DECIMALI A VIRGOLA MOBILE

SISTEMI OTTALE
Un certo interessa in informatica ha il sistema di numerazione a base 8.
In questo sistema le cifre base sono: 0, 1, 2, 3, 4, 5, 6, 7.

Decodifica da ottale a decimale
Esempio: 573,6718
Si utilizza il metodo posizionale:
   Pos (n)          2             1              0                            -1        -2              -3
    Peso            82           81             80                            8-1       8-2             8-3
  Numero            5             7              3              ,             6          7              1
                  5*82          7*81           3*80             ,           6*8-1     7*8-2            1*8-3
I pesi sono potenze di 8n dove 8 è il numero di cifre del sistema ottale, e n la posizione della cifra.

                                                                                                               19
                                      Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

Il risultato è pertanto:
N10 = 5*82 + 7*81 + 3*80 + 6*8-1 + 7*8-2 + 1*8-3 = 5*64 + 7*8 + 3*1 + 6/8 + 7/64 + 1/512 =
= 320 + 56 + 3 + 0,75 + 0,109375 + 0,001953125 = 373,86132812510

Codifica da ottale a binario
Dato che per rappresentare un numero ottale in binario occorrono 3 bit, infatti 2 3 = 8, le cifre binarie
corrispondenti a quelle ottali sono:
                                    Pesi            4         2             1
                                 cifre ottali           Cifre binarie
                                      0             0         0             0
                                      1             0         0             1
                                      2             0         1             0
                                      3             0         1             1
                                      4             1         0             0
                                      5             1         0             1
                                      6             1         1             0
                                      7             1         1             1

Si descrive ora, attraverso un esempio, la tecnica da utilizzare per convertire un numero ottale in
binario.
Esempio: trasformare il numero 63018 nel suo equivalente binario:
   N8                6                          3                       0                       1
  Pesi       4       2       1        4         2       1      4        2       1       4       2      1
   N2        1       1       0        0         1       1      0        0       0       0       0      1

Ogni cifra del numero dato si converte, sulla base della precedente tabella, nella corrispondente
tripletta di bit.
Il risultato è quindi:
                                           63018 = 1100110000012

                                                                                                           20
                                    Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

Decodifica da binario a ottale
Con lo stesso procedimento precedente si propone il seguente esempio di conversione di un numero
da binario a ottale.
Esempio: trasformare il numero 1110102 nel suo equivalente ottale:
                                                 111         010
                                                  7           2
Occorre raggruppare le cifre del numero binario in triplette e poi effettuare la solita conversione.
Il risultato che si ottiene è:
                                                 1110102 = 728

Errore tipico
Si converta in ottale il seguente numero binario: 10111010.
                                        101            110         10
                                         5              6           2

Il risultato ottenuto è errato.

Occorre fare attenzione che se il numero di bit non è multiplo di 3, occorre aggiungere a sinistra
tanti zeri quanto ne necessitano per arrivare a comporre delle triplette.
Pertanto occorre procedere in questo modo, partendo da destra si raggruppano i bit a tre a tre e nel
l’ultimo raggruppamento se ci sono meno di 3 bit si aggiungono tanti zeri quanti ne servono:
                                                  010 111 010

                                  Aggiunto

                                        010            111         010
                                         2              7           2

Il risultato corretto che si ottiene è quindi:
                                              101110102 = 2728

                                                                                                       21
                                   Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

Esempio
Convertire in binario il seguente numero ottale: 135,18

CODIFICA DALLA BASE N ALLA BASE DECIMALE
In generale, se si deve convertire un numero espresso in una qualsiasi base B (per esempio base 2,
base 3, base 4, etc.), in un numero espresso in base 10 (sistema decimale) occorre utilizzare il
metodo posizionale, ricordando che i pesi, che andranno moltiplicati per le corrispondenti cifre,
sono potenze di Bn dove B è il sistema di partenza e n è la posizione della cifra.
Per esempio, convertire in decimale il seguente numero esadecimale:
                                                    4356
        Pos (n)                       2                           1                          0
         Peso                         62                         61                          60
          N6                          4                           3                          5
          N10                        4*62                       3*61                       5*60

N10 = 4*62 + 3*61 + 5*60 = 4*36 + 3*6 + 5*1 = 144 + 18 + 5 = 16710

                                                                                                      22
                                   Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

SISTEMA ESADECIMALI
Il sistema esadecimale è un sistema di numerazione posizionale in base 16. Ciò vuol dire che, per
comporre un numero, il sistema esadecimale usa 16 simboli: le cifre da 0 a 9 e le lettere dalla A alla
F, per un totale di 16 cifre.
Nella seguente tabella è riportato per ogni cifra decimale la corrispondente cifra esadecimale e
binaria.
                                       Pesi                8           4         21    1
                            EXA               DEC                          BIN
                                0              0           0           0         0     0
                                1              1           0           0         0     1
                                2              2           0           0         1     0
                                3              3           0           0         1     1
                                4              4           0           1         0     0
                                5              5           0           1         0     1
                                6              6           0           1         1     0
                                7              7           0           1         1     1
                                8              8           1           0         0     0
                                9              9           1           0         0     1
                                A              10          1           0         1     0
                                B              11          1           0         1     1
                                C              12          1           1         0     0
                                D              13          1           1         0     1
                                E              14          1           1         1     0
                                F              15          1           1         1     1

Esempio: convertire il seguente numero esadecimale in decimale 97A.
                                Pos (n)             2           1                 0
                                    Pesi         162            161              160
                                    N16             9           7                A
                                    N10        9*162           7*161         10*160

N10 = 9*162 + 7*161 + 10*160 = 2304 + 112 + 10 = 242610

                                                                                                       23
                                      Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

Esempio: convertire il seguente numero binario in decimale e in esadecimale 111010.
Dato che 24 = 16 per convertire in esadecimale un numero binario occorre raggruppare i bit
quaterne (aggiungendo a sinistra eventuali zeri).

              Pesi       8        4           2     1        8         4            2    1
               N2        0        0           1     1        1         0            1    0
               N16                     3                                   10 = A
              Pesi                     161                                  160
               N10                    3*161                                10*160

N2 = 1110102 = 3A16 = (3*16+10)10 = 5810

                                                                                                     24
                                  Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

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.

                                                                                                    25
                                 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.

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

                                                                                                     26
                                  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

                                              13   1    1    0    1

                                              14   1    1    1    0

                                              15   1    1    1    1

                                                                                                     27
                                  Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

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

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

                                       27           /             2
                                      13,5         13             1
                                      6,5           6             1
                                       3            3             0
                                      1,5           1             1
                                      0,5           0             1

                        RISULTATO CON         RISULTATO SOLO          RESTO DELLA
                         PARTE INTERA            CON PARTE             DIVISIONE
                                                  INTERA

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 CON              RISULTATO             PARTE INTERA
   PARTE INTERA             SENZA PARTE
                               INTERA

                                                                                                    29
                                 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

                                                                                            30
                         Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

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

                                                                                                     31
                                  Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica

DECODIFICA: DA BIN A DEC
ES2: 1101102  N10 ?
     32                 16                  8                 4                  2                    1
      1                  1                  0                 1                  1                    0

32+16+4+2=5410

                                                                                                          32
                                   Copyright © 2013 – Ing. Daniele Corti
Puoi anche leggere