vuoi
o PayPal
tutte le volte che vuoi
RICHIAMI SISTEMI NUMERICI POSIZIONALI E NON POSIZIONALI
Si parla di sistema numerico non posizionale, quando la cifra all'interno del numero assume sempre il medesimo significato in qualsiasi posizione si trovi. Esempio classico è il sistema numerico che adottavano gli antichi Romani. I 1V 5X 10L 50C 100D 500M 1000.
Viceversa si dice che un sistema numerico è posizionale, se la cifra all'interno del numero assume un significato diverso a seconda della posizione in cui si trova. Scrivere infatti il numero 101 è diverso dallo scrivere 110, si stanno esprimendo due quantità diverse. Nel primo caso, supposto che si stia utilizzando il sistema decimale, infatti si ha:
2 1 0101 = 1x10 + 0x10 + 1x10
2 1 0110 = 1x10 + 1x10 + 0x10
La cifra 1 prende, quindi, il suo significato all'interno del numero e, a seconda di dove la si posiziona, diciamo che essa è un'unità, una decina, una centinaia e così via.
via.Ä :RICHIAMI EQUIVALENZA TRA SISTEMI NUMERICI
Un numero può essere espresso sotto varie basi. Quelle più rilevanti per l'informatica sono il sistema binario, ottale ed esadecimale. Il sistema binario opera unicamente su due cifre 0 ed 1, invece il sistema ottale ha come cifre numeri che vanno da 0 a 7, infine il sistema esadecimale sfrutta i numeri che vanno da 0 a 9 e le lettere da A alla F (per esprimere tutti i 16 valori).
decimale | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
binario | 0 | 1 | - | - | - | - | - | - | - | - | - | - | - | - | - | |
ottale | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | - | - | - | - | - | - | - | |
esadecimale | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
Molto spesso è necessario che vengano effettuate delle conversioni di base. Passare, cioè, un numero da una base ad un'altra. Se viene richiesto di passare da una qualsiasi base al sistema decimale, sfruttando proprio il concetto di sistema posizionale, è possibile convertire il numero effettuando banali operazioni.
Sia b la base un generico sistema
numerico posizionale e sia n la quantità di cifre componenti il numero su cui operare la conversione, c la generica cifra, allora si ha che:
i0 i1 ... in-1 = c0 × bn-1 + c1 × bn-2 + ... + cn-1 × b0
Viceversa se è necessario passare dal sistema decimale ad un qualsiasi sistema è possibile far uso di un procedimento che opera per divisioni successive. Possiamo, per ottenere una maggiore semplicità, riportare il tutto sotto forma di tabella, che sul lato sinistro riporta i quozienti delle divisioni, sul lato destro i rispettivi resti. Il divisore è proprio la base del sistema considerato, mentre il numero convertito è dato dalla lettura, dal basso verso l'alto della colonna dei resti.
È possibile utilizzare il seguente procedimento per convertire un numero da una base generica a base decimale:
- Scrivi il numero nella base di partenza.
- Moltiplica ogni cifra per la potenza della base corrispondente alla sua posizione.
- Somma i risultati ottenuti per ottenere il numero convertito in base decimale.
Esempi ed esercizi:
Conversione da base generica a decimale:
Si vogliono esprimere i seguenti numeri, scritti nelle rispettive basi, come numeri decimali:
1408, 16101102, 303, 12220, 1101116.
1408 = 0×82 + 4×81 + 1×80
= 96|8 |100 1 2140 = 0×16 +4×16 +1×16 = 320|16 |100 1 2 3 410110 = 0×2 +1×2 +1×2 +0×2 +1×2 = 22|2 |100 130 = 0×16 +3×16 = 48|16 |100 1 2122 = 2×3 +2×3 +1×3 = 17|3 |100 1 2 3 411011 = 1×2 +1×2 +0×2 +1×2 +1×2 = 27|2 |10Ä :ESEMPI ED ESERCIZI CONVERSIONE DA BASE DECIMALE A GENERICASi vuole esprimere il numero decimale 140 sotto forma di numero binario, ottale ed esadecimale.AVVERTENZEQuesto genere di procedura è valida per qualsiasi base, ponendo come divisore dei vari quozienti proprio labase b e rileggendo i resti, all’interno della tabella, dal basso verso l’alto.base 2quozienti resti140 070 035 117 18 04 02 01 1Operando e iterando la divisione dei quozienti per il valore della base 2, il numero 140 = 10001100 .|10 |2base 8quozienti resti140 417 12 2Effettuando analoghe operazioni per la base 8, si ottiene che 140 = 214 .|10 |8base 16quozienti resti140 C8
8Infine 140 = 8C .|10 |16Ä :RICHIAMI VELOCI PROCEDURE DI PASSAGGIO
Ci sono delle semplici procedure, decisamente più veloci di quelle mostrate, per passare da un numero in binario ad un numero in ottale o in esadecimale e viceversa.
7 6 5 4 3 2 1 0
2 2 2 2 2 2 2 2
1 0 0 0 1 1 0 0
1403 2 1 0 3 2 1 0
2 2 2 2 2 2 2 2
1 0 0 0 1 1 0 0
8 C1 0 2 1 0 2 1
2 2 2 2 2 2 2 2
1 0 0 0 1 1 0 0
2 1 4 .
Raccogliamo (da destra verso sinistra) gruppi
Infatti prendiamo il numero in binario corrispondente al 140|10di n bit, laddove se vogliamo rappresentare in esadecimale n = log 16 = 4, se vogliamo, invece, rappresentare in
2 0 1 n-1
ottale si ha n = log 8 = 3. Ai vari gruppi applichiamo poi la formula y = c ×b +c ×b +…+c ×b , operando su di
2 |b 0 1 n-1
essi separatamente.
SISTEMI NUMERICI
I numeri costituiscono un tipo particolare di dato e bisogna fissare a priori quale classe di numeri si vuole rappresentare. La matematica classica ci permette di sfruttare degli insiemi di numeri infiniti,
Tuttavia questo non succede se sfruttiamo l'aritmetica del calcolatore. Infatti, il calcolatore non può operare su insiemi densi di numeri, perché non è in grado di rappresentare infiniti numeri e pertanto esso deve far uso di insiemi che siano limitati. Da qui si pone il problema fondamentale di definire una funzione di rappresentazione, che ad ogni numero reale faccia corrispondere un numero rappresentabile per il calcolatore. Sintetizzando, una rappresentazione deve definire:
- L'intervallo numerico da rappresentare;
- Regola di rappresentazione;
- Approssimazione;
- Condizione di underflow ed overflow;
- Base di numerazione;
- Codifica delle cifre.
L'insieme dei numeri rappresentabili dal calcolatore, che viene qui denotato con la lettera M, come abbiamo detto, non è continuo. Pertanto possiamo immaginarlo come un intervallo bucherellato, laddove per rimpiazzare i numeri, che non sono direttamente rappresentabili, li
si approssima al più vicino numero macchina aventerappresentazione, gli si applica cioè un’approssimazione. MRUNDERFLOW E OVERFLOWTrattando la rappresentazione dei numeri esistono degli eventi, che possono presentarsi e possono dare luogoad una rappresentazione errata o ad errori nei programmi. Questi prendono il nome di underflow e overflow.L’underflow si verifica nel momento in cui il numero da rappresentare è talmente piccolo, che il calcolatore loapprossima allo 0. Un overflow, invece, si verifica nel momento in cui si tenta la rappresentazione di un numeroche non appartiene all’intervallo.overflow underflow overflow0intervallo dirappresentazioneÄ :RICHIAMI COME DETERMINARE IL MASSIMO DI UN INSIEME DI NUMERI NATURALI DA RAPPRESENTAREPer sapere il massimo di un insieme di numeri che è possibile rappresentare, occorre avere due informazionifondamentali la base numerica da adottare (indicato con la lettera b) e il numero di bit
(indicato con n) di cui sindispone per la rappresentazione. Da cui, posto M il massimo dell'insieme dei numeri rappresentabili, M = b -1. Seinfatti vogliamo adottare la base 2 e abbiamo a disposizione un massimo di 3 bit allora il massimo numero3rappresentabile è 7 (= 2 -1).
NOTAZIONIPer adottare una notazione comprensibile, con x verrà indicato il numero da rappresentare, con X il numeromacchina rappresentato, con M il massimo dell'insieme. Sia, infine, il sistema di numerazione considerato quellobinario.
ARITMETICA DEI NUMERI NATURALIfunzione di rappresentazione: X = xintervallo di rappresentazione: I = [0, M[condizione di overflow: x<0 oppure x ≥ MNell'aritmetica dei numeri naturali gli operandi sono numeri interi appartenenti ad un intervallo [0,M[predefinito e le operazioni sono le quattro aritmetiche fondamentali. Se il risultato delle operazioni non si trovaall'interno dell'intervallo di rappresentazione, viene generato
La tabella dei numeri rappresentabili è la seguente:overflow.:ARITMETICA DEI NUMERI RELATIVI RAPPRESENTAZIONE IN SEGNO E MODULO
funzione di rappresentazione: X = |x|· s = sign(x)
intervallo di rappresentazione: I = ]-M, M[
condizione di overflow: |x| ≥ M
Il mezzo più naturale per rappresentare gli interi relativi è quello tradizionale di adoperare separatamente un bit per il segno e i restanti bit per il modulo. Il numero, quindi, è rappresentato da n cifre di X e dal segno di s. In aritmetica binaria s assume, per convenzione, valore 1 se X è negativo, 0 se è positivo.
n -15 15
Pertanto per M = 2 servono n+1 bit, giacché con 16 bit si rappresenta l’intervallo 2 <x<2 . A vantaggio di questa rappresentazione v’è la coincidenza con la rappresentazione tradizionale del numero per quanto concerne il modulo. A svantaggio il fatto che gli algoritmi aritmetici sono appesantiti dalla necessità di operare sul segno e modulo separatamente. Supponendo 5 bit per la rappresentazione,
Numero | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|
15 | 0 | 1 | 1 | 1 | 1 |
14 | 0 | 1 | 1 | 1 | 0 |
13 | 0 | 1 | 1 | 0 | 1 |
12 | 0 | 1 | 1 | 0 | 0 |
11 | 0 | 1 | 0 | 1 | 1 |
10 | 0 | 1 | 0 | 1 | 0 |
9 | 0 | 1 | 0 | 0 | 1 |
8 | 0 | 1 | 0 | 0 | 0 |
7 | 0 | 0 | 1 | 1 | 1 |
6 | 0 | 0 | 1 | 1 | 0 |
5 | 0 | 0 | 1 | 0 | 1 |
4 | 0 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 0 | 1 | 1 |
2 | 0 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 0 | 0 |
-1 | 1 | 0 | 0 | 0 | 1 |
-2 | 1 | 0 | 0 | 1 | 0 |
-3 | 1 | 0 | 0 | 1 | 1 |
-4 | 1 | 0 | 1 | 0 | 0 |
-5 | 1 | 0 | 1 | 0 | 1 |
-6 | 1 | 0 | 1 | 1 | 0 |
-7 | 1 | 0 | 1 | 1 | 1 |
-8 | 1 | 0 | 0 | 0 | 0 |
-9 | 1 | 1 | 0 | 0 | 1 |
-10 | 1 | 1 | 0 | 1 | 0 |
-11 | 1 | 1 | 0 | 1 | 1 |
-12 | 1 | 1 | 1 | 0 | 0 |
-13 | 1 | 1 | 1 | 0 | 1 |
-14 | 1 | 1 | 1 | 1 | 0 |
-15 | 1 | 1 | 1 | 1 | 1 |
ARITMETICA DEI NUMERI RELATIVI RAPPRESENTAZIONE IN COMPLEMENTI ALLA BASE
Funzione di rappresentazione: X = |x| Mn-1 n-1
Intervallo di rappresentazione: I = [-2 , 2 -1]
Condizione di overflow: |x| ≥ M
Un'altra tecnica per la rappresentazione dei numeri relativi consiste nell'associare a ciascun numero il suo resto M = 2 . Questo tipo di codifica si realizza su n bit ed è equivalente ad associare il numero stesso ai numeri interi
positivi compresi tra 0 ed 2 -1 e il numero X = 2 -|x|, ai numeri negativi compresi tra 2 e -1.
Numero: 7
- 1 1 16 0 1 1 05 0 1 0 14 0 1 0 03 0 0 1 12 0 0 1 01 0 0 0 10 0 0 0 0-1 1 1 1 1-2 1 1 1 0-3 1 1 0 1-4 1 1 0 0-5 1 0 1 1-6 1 0 1 0-7 1 0 0 1-8 1 0 0 0
Il negativo di un numero rappresentato con questo sistema può essere trovato molto semplicemente in due modi: n• preso il valore di 2 sottrarre