Ddattica.net

Corsi formazione di informatica

Argomenti » Fondamenti di Informatica » Sistemi di numerazione

Scegli un argomento:

Sistemi di numerazione

fabio ghidini — ghidini@ddattica.net

Convenzioni

Nel seguente documento verranno utilizzati i seguenti simboli:

#
numero o numeri
dec
sistema decimale: verrà usato come pedice per un numero espresso nel sistema decimale, ad esempio 435dec. Tale simbolo verrà omesso nei casi in cui é ovvio che si tratta di un numero espresso nel sistema decimale.
bin
sistema binario: verrà usato come pedice per un numero espresso nel sistema binario, ad esempio 1011 1101bin
hex
sistema esadecimale: verrà usato come pedice per un numero espresso nel sistema esadecimale, ad esempio 1AF8hex

Inoltre in questo documento per brevità non verranno utilizzati numeri decimali (numeri con frazioni di unità, intese in qualsiasi sistema numerico) né numeri negativi, e di conseguenza non verranno illustrati gli argomenti e i problemi relativi a questi numeri (tali argomenti potrebbero essere oggetto di ulteriori documenti).

Si noti che per i numeri decimali verrà utilizzata la notazione italiana che prevede l'inserimento di un punto ( . ) tra le migliaia, ad esempio 1.347.908dec.

Per comodità di lettura i numeri binari verranno suddivisi, con degli spazi, in blocchi di 4 cifre, ad esempio 1101 0010 0011bin.

Verranno utilizzate la b minuscola per indicare il bit (o i bits) e la B maiuscola per indicare il byte (o i bytes).

Premessa: le proprietà delle potenze

Cominciamo col vedere alcune proprietà delle potenze. 32 significa moltiplicare 3 per 3 due volte, cioé

32 = 3 × 3

mentre scrivere 53 significa moltiplicare 5 per 5 tre volte, cioé

53 = 5 × 5 × 5

Scrivere un numero ad esponente negativo significa farne l'inverso, cioé:

8-2 = 1 ÷ 82 = 1 / 82

Esistono alcune proprietà che caratterizzano le potenze ai fini del nostro argomento:

  • il valore di un qualsiasi numero elevato ad esponente 0 é 1, cioé x0 = 1, dove x é un qualsiasi numero
  • se vengono moltiplicati due numeri esponenziali con la stessa base, é possibile sommare gli esponenti, cioé 72 × 73 = 72+3 = 75
  • se vengono divisi due numeri esponenziali con la stessa base, é possibile sottrarre gli esponenti, cioé 72 ÷ 73 = 72 / 73 = 72-3 = 7-1 = 1 / 7
  • se viene elevato ad esponente una potenza, i due esponenti si moltiplicano (82)7 = 814

In particolare, si noti che elevare ad esponente il numero dieci facilita il calcolo: 10x, cioé elevare 10 ad un esponente x significa fare seguire all' 1 tanti zeri quanto é il valore di x

  • 100 = 1, cioé 1 seguito da 0 zeri.
  • 101 = 10, cioé 1 seguito da 1 zero.
  • 102 = 100, cioé 1 seguito da 2 zeri.
  • 103 = 1.000, cioé 1 seguito da 3 zeri.
  • 104 = 10.000, cioé 1 seguito da 4 zeri.
  • 105 = 100.000, cioé 1 seguito da 5 zeri.
  • 106 = 1.000.000, cioé 1 seguito da 6 zeri.
Il sistema decimale
Caratteristiche

Il nostro sistema di numerazione, che deriva dagli Arabi, é un sistema con notazione posizionale in base 10. Ciò significa che:

  • la posizione delle cifre é importante, le cifre più significative stanno a sinistra, quelle meno significative a destra. In altri termini, un 5 scritto a destra (5 unità) ha meno valore di un 5 scritto 3 cifre più a sinistra (5 migliaia).
  • la base é 10.
  • le cifre vanno da 0 a 9, cioé 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, cioé sono 10 (come, appunto, la base)

Ad esempio, possiamo esprimere il numero 25749 scomponendolo nelle sue componenti esponenziali in base 10:

25.049 = 2×104 + 5×103 + 0×102 + 4×101 + 9×100

dove appunto 10 é la base.
Ma da dove deriva l'idea di utilizzare la base 10? Probabilmente dal fatto che gli esseri umani hanno 10 dita. Il sistema di numerazione in base 10, quindi, é particolarmente 'naturale' per gli uomini.

Range di valori rappresentabili

Quale numero massimo é possibile rappresentare, ad esempio, con 8 cifre decimali? La risposta é ovvia, proprio per il fatto che siamo abituati a ragionare in base 10: il numero massimo rappresentabile con 8 cifre é:

99.999.999 cioé 9×107 + 9×106 + 9×105 + 9×104 + 9×103 + 9×102 + 9×101 + 9×100

Il range (l'intervallo) di valori rappresentabile con 8 cifre va da 0 a 99.999.999, o più semplicemente da 0 a 108-1. Infatti 108-1 = 100.000.000 - 1 = 99.999.999E si noti che questi numeri sono

(99.999.999 numeri)+ (1 numero, lo zero) = 100.000.000 numeri = 108 numeri

Più in generale, con x cifre decimali si possono rappresentare 10x numeri, e tali numeri vanno da 0 a 10x-1.

Quindi, ad esempio, con 5 cifre decimali si possono rappresentare 105 numeri che vanno da 0 a 105-1, cioé da 0 a 99.999.

Il sistema binario
Caratteristiche

I computer funzionano con componenti elettronici, all'interno dei quali circola la corrente. E' più semplice per un computer identificare 2 differenti livelli di tensione, che non 10: quando in un componente elettronico c'é tensione, si considera che il numero rappresentato sia 1, quando non c'é tensione si ha il numero 0. Da qui il fatto che i computer funzionano con il sistema binario.

Ecco le caratteristiche del sistema binario:

  • la posizione delle cifre é importante, le cifre più significative stanno a sinistra
  • la base é 2.
  • le cifre sono 0 e 1, cioé sono 2 (come appunto la base).

Si noti che, a meno della base e delle cifre, tutto funziona esattamente come per il sistema decimale!

Proviamo ora a scrivere un numero binario: ovviamente possiamo solo utilizzare le cifre 0 e 1. Ad esempio possiamo scrivere:

1001 1101bin
Conversione binario-decimale

Analogamente a quanto visto per il sistema decimale, scomponiamo il numero binario (dalla cifra più significativa a sinistra, verso destra) nelle sue componenti esponenziali (in base 2), cioé:

1001 1101bin = (1×27 + 0×26 + 0×25 + 1×24 + 1×23 + 1×22 + 0×21 + 1×20)dec

Dopo aver scomposto questo numero binario é anche facile calcolare a quale numero decimale corrisponde , basta fare il calcolo:

1001 1101bin = (1×27 + 0×26 + 0×25 + 1×24 + 1×23 + 1×22 + 0×21 + 1×20)dec = = (1×128 + 0×64 + 0×32 + 1×16 + 1×8 + 1×4 + 0×2 + 1×1)dec = 157dec
Scomposizione in fattori
1001 1101bin = 1×27 + 0×26 + 0×25 + 1×24 + 1×23 + 1×22 + 0×21 + 1×20
= 1×128 + 0×64 + 0×32 + 1×16 + 1×8 + 1×4 + 0×2 + 1×1
= 128 + 0 + 0 + 16 + 8 + 4 + 0 + 1
= 157                
Conversione decimale-binario

La conversione da un numero dicimale in un numero binario può essere effettuata semplicemente utilizzando l'algoritmo della divisione ripetuta per 2 . E' sufficiente dividere ripetutamente il numero decimale da convertire per 2. Il resto della divisione diventa la cifra meno significativa del numero binario e andrà messa a destra (e le successive andranno inserite via via a sinistra di quelle già scritte). Quindi si ripete il procedimento della divisione per 2 applicandolo al quoziente del passo precedente. La procedura continua fino a quando il quoziente diventa 0.

Supponiamo ad esempio di volere convertire 275dec in binario:

Conversione decimale-binario
Divisione Quoziente Resto  
275 / 2 137 1 1
137 / 2 68 1 11
68 / 2 34 0 011
34 / 2 17 0 0011
17 / 2 8 1 10011
8 / 2 4 0 010011
4 / 2 2 0 0010011
2 / 2 1 0 00010011
1 / 2 0 1 100010011

Abbiamo ottenuto che 275dec = 1 0001 0011bin.

Si noti che questo algoritmo é solo uno di quelli possibili per la conversione decimale-binario.

Range di valori rappresentabili

Analogamente al sistema decimale, é possibile calcolare qual é il range di valori che é possibile rappresentare che x cifre binarie: esso andrà da 0dec a (2x-1)dec, cioé 2x numeri.

Ad esempio, con 8 cifre binarie é possibile rappresentare 28 = 256 numeri, che andranno da da 0dec a (28-1=255)dec, o meglio da 0000 0000bin a 1111 1111bin. Infatti:

1111 1111bin = (1×27 + 1×26 + 1×25 + 1×24 + 1×23 + 1×22+ 1×21+ 1×20)dec = 255dec
Il sistema esadecimale
Caratteristiche

Il sistema binario, per quanto perfetto per l'uso nei calcolatori, é poco pratico da utilizzare, in quanto per esprimere un numero decimale (ad esempio 487dec) neppure troppo grande sono necessarie parecchie cifre decimali (nell'esempio 1 1110 0111bin). Per questo motivo é stato introdotto l'utilizzo del sistema esadecimale, che presenta alcuni vantaggi:

  • rappresentazione più compatta di numeri grandi
  • la conversione tra numeri binari ed esadecimali é molto semplice.

Come alcuni potranno evincere dal nome, il sistema esadecimale prevede base 16. Poiché nel nostro sistema decimale si hanno solo 10 cifre (0..9), si ovvia al problema inserendo tra le cifre anche alcune lettere, fino ad arrivare a 16 cifre:

0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

In questo modo abbiamo ottenuto le 16 cifre che servivano. Come é facile capire, si ha che

  • 8hex=8dec
  • 9hex=9dec
  • Ahex=10dec
  • Bhex=11dec
  • Chex=12dec
  • Dhex=13dec
  • Ehex=14dec
  • Fhex=15dec

Ecco le caratteristiche del sistema esadecimale:

  • la posizione delle cifre é importante, le cifre più significative stanno a sinistra
  • la base é 16.
  • le cifre vanno da 0 a 9 e da A ad F, cioé sono 16.
Conversione esadecimale-decimale

Proviamo a scrivere un numero esadecimale, ad esempio C38Fhex. Come al solito possiamo fattorizzarlo nelle sue componenti potenze della base, e da qui ottenere il suo valore decimale:

C38Fhex = (C×163 + 3×162 + 8×161 + F×160)˜dec = (12×163 + 3×162 + 8×161 + 15×160)dec = 50.063dec
Conversione decimale-esadecimale

La conversione da un numero decimale al rispettivo esadecimale si può effettuare con l'algoritmo della divisione ripetuta per 16, analogo al metodo della divisione ripetuta per 2 già visto in precedenza.

Conversione esadecimale-binario e binario-esadecimale

Probabilmente più interessante risulta essere la conversione tra un numero binario in esadecimale (e viceversa), proprio in virtù del fatto che il sistema esadecimale é stato inventato ed introdotto proprio per scrivere i numeri in modo più compatto con una conversione semplice.

Ecco la tabella di conversione, facilmente ottenibile dalle proprietà già viste:

Tabella di base per la conversione
Sistema decimale Sistema binario Sistema esadecimale
00 0000 0
01 0001 1
02 0010 2
03 0011 3
04 0100 4
05 0101 5
06 0110 6
07 0111 7
08 1000 8
09 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

Dalla tabella si può notare che ogni cifra esadecimale può essere rappresentata da un numero binario di 4 cifre.

Supponiamo di voler convertire in esadecimale il numero 1 1000 1110 0001bin. Il primo passo consiste nell'aggiungere degli zeri alla sinistra del numero in modo da avere un numero totale di cifre multiplo di 4, cioé 0001 1000 1110 1011bin.

A questo punto é sufficiente convertire singolarmente ciascun blocco, mantenendo l'ordine:

  • 0001bin= 1hex
  • 1000bin= 8hex
  • 1110bin= Ehex
  • 1011bin= Bhex

Cioé 1 1000 1110 1011bin = 18EBhex.

Analogamente é possibile effettuare la conversione da esadecimale a binario, é sufficiente trasformare ogni cifra esadecimale in un numero binario di 4 cifre. Questo proprio in virtù del fatto che ad ogni cifra xhex corrisponde un numero binario di 4 cifre, in quanto la più grande cifra esadecimale é Fhex = 15dec = 1111bin .

Range di valori rappresentabili

Qual é il range di valori che é possibile rappresentare con x cifre esadecimali? Esso andrà da 0dec a (16x-1)dec, cioé si tratta di 16x numeri.

Ad esempio, con 4 cifre esadecimali é possibile rappresentare 164 = 65.536 numeri, che andranno da 0dec a (164-1=65.535)dec, o meglio da 0000hex a FFFFhex. Infatti:

FFFFhex = (F×163 + F×162 + F×161 + F×160)˜dec = (15×163 + 15×162 + 15×161 + 15×160)dec = 65.535dec
Tabella riassuntiva della proprietà
Tabella riassuntiva
Sistema Base Cifre # cifre Esempio di scomposizione in fattori # rappresentabili con x cifre
(ad es. con 4 cifre)
range con x cifre
(ad es. con 4 cifre)
Decimale 10 0,1,2,3,4,5,6,7,8,9 (in totale 10 cifre) 10 4076 = 4×103 + 0×102 + 7×101 + 6×100 10x
(104= 10.000)
da 0 a 10x-1
(da 0 a 9.999)
Binario 2 0,1 (in totale 2 cifre) 2 0101 = 0×23 + 1×22 + 0×21 + 1×20 2x
(24= 16)
da 0 a 2x-1
(da 0 a 1111bin=15dec)
Esadecimale 16 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F (in totale 16 cifre) 16 E20C = E×163 + 2×162 + 0×161 + C×160 = 14×163 + 2×162 + 0×161 + 12×160 16x
(164= 65.536)
da 0 a 16x-1
(da 0 a FFFFhex=65.536dec)
copyright © 2004 ddattica.net — tutti i diritti riservatiprivacy
top | xhtml | CSS | webmaster