Rappresentazione dei numeri

SISTEMA POSIZIONALE DECIMALE

Come rappresentare un numero naturale?

  • Rappresentazione decimale posizionale

    • si utilizzano 10 cifre decimali (0, 1, ......, 9): la base è 10

    • posizionale: il significato di ogni cifra dipende dalla sua posizione relativa

    • le posizioni si contano da destra a sinistra partendo da 0

1919 = 1 * 10^3 + 9 * 10^2 + 1 * 10^1 + 9 * 10^0

Il carattere ^ rappresenta l'elevamento a potenza, esempio 2^3, vuol dire, 2 elevato alla terza, cioè 8, 2 * 2 * 2.

Esercizi

SCRIVERE I SEGUENTI NUMERI DECIMALI evidenziando le POTENZE

es 14 = 1 * 10 ^ 1 + 4 * 10 ^ 0

Ora:

543 = ............................................

1435 = 1 * 10 ^ 3 + 4 * 10 ^ 2 + 3 * 10 ^ 1 * 5 * 10 ^ 0

809 987 = ............................................

Rappresentazione dei numeri naturali

In generale: numero di n cifre in base b:

Le rappresentazioni utilizzate nel campo dell'informatica, sono:

  • Rappresentazione binaria

    • base 2 (b = 2)

    • le cifre (binarie) sono: 0 e 1

  • Rappresentazione ottale

    • base 8 (b = 8)

    • le cifre (ottali) sono: 0, 1,. . . , 7

  • Rappresentazione esadecimale

    • base 16 (b = 16)

    • le cifre (esadecimali) sono: 0,1,. . . , 9, A, B, C, D, E, F

Ora le vediamo una ad una.

Sistema BINARIO

In analogia al sistema decimale, le cifre del sistema binario, 0 e 1, assumono un valore posizionale nella scrittura del numero binario con riferimento alle potenze di 2, anziché alle potenze di 10.

Le potenze di 2 con esponente da 0 a 10 sono:

Quindi il numero binario 1001 corrisponde al numero decimale 9, perché

Se scrivo il numero 123 dicendo che è un numero binario, è corretto? ......................................

Da SISTEMA BINARIO a DECIMALE

Convertire un numero in base 2 nel valore decimale

10 = .........................................................

111 = ...........................................................

1011 1111 = ...............................................

1111 1111 = ................................................

Sistema OTTALE (base 8)

Il sistema ottale si chiama così perché utilizza 8 cifre nella rappresentazione dei numeri: 0, 1, 2, 3, 4, 5, 6, 7.

Il valore posizionale delle cifre dipende dalle potenze di 8:

Le regole per la conversione di un numero ottale in decimale sono analoghe a quelle già descritte per il sistema decimale.

Il numero 789 è un numero corretto nel sistema ottale? ..........

Motivate la risposta.

Da OTTALE a DECIMALE

Esprimere i seguenti numeri espressi in base ottale come numeri decimali.

754 = ..........................................................

1745 = ........................................................

Sistema Esadecimale (base 16)

Il sistema esadecimale utilizza 16 cifre:

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

Quindi la lettera A rappresenta il numero decimale 10 in esadecimale, B il numero 11, C il numero 12, D il numero 13, E il numero 14, F il numero 15. Il valore delle cifre dipende dalla posizione nella scrittura del numero secondo le potenze di 16:

La trasformazione del numero esadecimale 3AF2 in numero decimale:

FA è un numero coretto in base 16 (esadecimale)? Motivate la risposta.

Da ESADECIMALE a DECIMALE

Esprimere i seguenti numeri esadecimali in base 10.

F1A = ...........................................................

FF = ..............................................................

PROBLEMA 1

In un pianeta remoto, lontano anni luce dalla Terra, abitato da una popolazione aliena ha un sistema di numerazione base 4 (in effetti hanno 2 dita per mano, e hanno due braccia).

Domande:

  • Che cifre possibili possono avere i numeri in base 4

  • Contate fino a 16 scrivendo il corrispettivo numero in base 4

    0 -> 0

    1 --> 1

    2 -> 2

    3 -> 3

    4 -> 10

    5 -> 11

    6 -> 12

    7 -> 13

    8 -> 20

    9 -> 21

    10 -> 22

    11 -> 23

    12 -> 30

    13 -> 31

    14 -> 32

    15 -> 33

    16 -> 100

Rappresentazione dei numeri naturali - conversioni

Come convertire un numero da base 10 a base 2, 8 o 16?

Procedimento:

Abbiamo un numero (n) base 10 da convertire nella base b:

  1. dividere n per b con una divisione intera

  2. il resto della divisione diventa la cifra meno significativa (la prima che resta da calcolare) del numero in base b

  3. se il quoziente è 0 abbiamo finito

  4. se il quoziente è diverso da zero si torna al passo 1 considerando il quoziente come dividendo

CONVERSIONE NUMERO DECIMALE a BINARIO

35 (base 10) ---> 1 0 0 0 1 1 (base 2)

 35/2  = 17 resto 1
 17/2 = 8 resto 1
  8/2 = 4 resto 0
  4/2 = 2 resto 0
  2/2 = 1 resto 0
  1/2 = 0 resto 1
  
quindi = 100011

CONVERSIONE NUMERO DECIMALE in OTTALE

1602 (base 10) --> 3102 (base 8)

 1602/8 = 200 resto 2
  200/8 =  25 resto 0
   25/8 =   3 resto 1
    3/8 =   0 resto 3
	 
quindi = 3102

CONVERSIONE NUMERO DECIMALE in ESADECIMALE

16034 (base 10) -> 3 E A 2 (base 16)

 16034/16 = 1002 resto 2 
  1002/16 = 62 resto 10 (A)
    62/16 =  3 resto 14 (E)
	   3/16 =  0 resto 3 
   
quindi = 3EA2

OPERAZIONI DI ADDIZIONE TRA NUMERI IN BASE BINARIA

Data la rappresentazione binaria dei numeri, un problema interessante è quello di capire come possano essere effettuate le usuali operazioni aritmetiche su tali numeri. Nel caso della rappresentazione decimale ci è stato insegnato fin da piccoli come fare le operazioni e abbiamo quindi un procedimento automatico per eseguirle. Si pensi, ad esempio, alla operazione di addizione: il nostro procedimento automatico prevede di mettere in colonna i numeri da sommare e quindi prevede delle ben precise regole di somma con l'effettuazione di riporto ogni volta che una somma parziale supera il valore 9.

Lo stesso identico procedimento automatico di addizione può essere utilizzato anche nel caso di operazioni in base 2. L'unica differenza è che in questo caso si devono effettuare riporti nel caso in cui la somma parziale supera 1. Avremo quindi la seguente tabella di regole di somma parziale da utilizzare nell'eseguire le nostre operazioni:

0 + 0 = 0 con riporto 0
0 + 1 = 1 con riporto 0
1 + 0 = 1 con riporto 0
1 + 1 = 0 con riporto 1

Vediamo qualche semplice esempio:

  1 +               101 +               10110101 +
  1  =               11 =                1000110 =
------       --------------      ----------------------
 10                1000                 11111011

In questo modo si possono continuare ad usare gli stessi procedimenti imparati per l'aritmetica decimale per eseguire una qualunque operazione. Nel seguito non analizzeremo in dettaglio il problema, ma si può verificare che anche i procedimenti per eseguire sottrazioni o prodotti ( e tutte le altre operazioni) possono essere applicati in modo naturale.

Un aspetto importante dell'aritmetica dei calcolatori è invece il fatto che in alcuni casi si può avere un errore come risultato di un'operazione. In particolare, il problema può sorgere nel caso in cui la somma di due numeri rappresentabili con il numero di bit prescelto non sia rappresentabile e quindi abbia un errore di overflow. Supponiamo di avere numeri rappresentabili mediante 8 bit e di eseguire la seguente somma:

  10110101 +
  11011110 =     OVERFLOW
--------------------
 110010011 

Si ha un errore di overflow in quanto il risultato della somma non è rappresentabile con 8 bit ma ne richiede almeno 9. In situazioni di questo tipo si ha un errore nell'esecuzione dell'operazione e l'arresto dell'elaborazione.

Quindi:

 1 +
 1 =
----
10
 1 +
 1 +
 1 =
-------
11

ESEMPIO DI OPERAZIONI TRA NUMERI IN BASE 4

Un numero in base 4 ha le seguenti cifre da 0 a 3. Eseguiamo l'operazione in base 4:

 2 +
 2 =
----
10

oppure:

 2 +
 3 =
----
11

RANGE DI RAPPRESENTAZIONE DEI NUMERI

Visto che poi la rappresentazione binaria dei numeri viene immagazzinata in memoria del PC e in modo specifico nei registri della CPU per eseguire ad esempio le operazioni, dobbiamo essere consci che i registri non composti da un numero fissato di bit.

In base allo spazio (numero di bit per immagazzinare il numero) il numero avrà un certo range, cioè il numero massimo esprimibile dipenderà dal numero di bit utilizzati per memorizzare il numero.

Ragioniamo prima con i numeri decimali e vediamo poi il ragionamento con i numeri binari, quelli realmente memorizzati in memoria.

Con tre cifre il numero massimo esprimibile è 999 cioè 10^3 -1.

In effetti le combinazioni come abbiamo già visto sono 10^3 e quindi posso esprimere numeri da 0 a 10^3 -1.

Se la base invece di essere decimale è binaria, il ragionamento è simile: con 3 bit il numero più grande esprimibile è 111 e quindi, 2 ^ 3 -1 (valore 7 in decimale).

Con 4 bit il numero massimo è 2 ^ 4 - 1 (valore 15).

La regola è che il range va da 0 a b ^ n -1 dove b è la base e n è il numero di cifre massime a disposizione.

Tipicamente nei PC i numeri sono memorizzati in byte e in base al numero di byte utilizzati questi sono i range:

ALTRE CODIFICHE SUI NUMERI

In questo corso, abbiamo visto solo la codifica dei numeri naturali.

Compito dei corsi dei prossimi anni sarà vedere come si codificano anche i numeri interi (quindi anche i numeri negativi) e i razionali (numeri in virgola mobile).

I tutti i moderni linguaggi di programmazione, hanno la possibilità di esprimere valori numerici in tutti questi tipi (interi, con o senza segno, e floating-point) e con range diversi in base al numero di byte da riservare in memoria.

Last updated