Sei sulla pagina 1di 14

Università degli Studi di Messina

Dipartimento di Ingegneria Elettronica, Chimica e Ingegneria Industriale

Corso di Laurea
Ingegneria Elettronica e Informatica
Anno Accademico 2013/2014

Calcolatori

Sistemi numerici posizionali

Dario Bruneo

1
Nota

Le slide seguenti sono da intendersi come materiale didattico aggiuntivo del corso di
Calcolatori.

Non possono in nessun modo essere sostitutive dei libri di testo, devono
quindi essere usate esclusivamente come una guida.

Eventuali errori o segnalazioni possono essere inviati all’indirizzo dbruneo@unime.it

Alcune figure sono tratte da:

Mano, Kime “Logic and Computer Design Fundamentals” 3° edition Pearson Prentice Hall

Patterson, Hennessy “Struttura e progetto dei Calcolatori” 2a edizione Zanichelli

Calcolatori a.a. 13/14 Dario Bruneo


2
Sistemi numerici posizionali

I numeri vengono rappresentati mediante sequenze di cifre

Il valore associato ad ogni cifra dipende dalla sua posizione

Es. (sistema decimale)! ! 324,7 = 3*102 + 2*101 + 4*100 + 7*10-1

In generale, in un sistema posizionale in base b (i cui elementi sono le cifre 0,1, ,b-1), data una sequenza di
cifre:
an-1an-2 a0,a-1a-2 a-m

n−1
il valore del numero è dato dalla seguente espressione in serie: ∑ ab i
i

i=−m

an-1bn-1+an-2bn-2+ +a0b0,a-1b-1+a-2b-2+ +a-mb-m

Es. (sistema ottale)! ! ! (324.7)8 = 3*82 + 2*81 + 4*80 + 7*8-1

Calcolatori a.a. 13/14 Dario Bruneo


3
Sistemi numerici posizionali (cont.)

Nello studio dei calcolatori elettronici i sistemi numerici più importanti sono:

il sistema binario (base: 2 - cifre: {0,1})

il sistema esadecimale (base: 16 - cifre: {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F})

Per tale motivo verranno utilizzate spesso le potenze del 2

Tabella delle prime potenze del 2

Calcolatori a.a. 13/14 Dario Bruneo


4
Conversione da base b a base 10

La conversione in base dieci di un numero espresso in una qualsiasi base b è facilmente ottenibile
eseguendo, in aritmetica decimale, i calcoli relativi all’espressione in serie del numero stesso

Es. (sistema ottale)! ! ! ! (324,7)8 = 3*82 + 2*81 + 4*80 + 7*8-1 = 192 + 16 + 4 + 0,875 = (212,875)10

Nel caso del sistema binario i calcoli sono semplificati dal fatto che la potenza del 2 (base) deve essere
moltiplicata solo per 1 o per 0

Es. (sistema binario)! ! ! ! (100101,01)2 = 25 + 22 + 20 + 2-2= (37,25)10

Nel caso del sistema esadecimale si deve fare attenzione a far corrispondere alle lettere il corretto valore
decimale (A=10, B=11, C=12, D=13, E=14, F=15)

Es. (sistema esadecimale)! ! (21B,A)16 = 2*162 + 1*161 + 11*160 + 10*16-1= (539,625)10

Calcolatori a.a. 13/14 Dario Bruneo


5
Conversione da base 10 a base b

Per la conversione di un numero espresso in base 10 in una qualsiasi altra base è utile separare i due casi:
numeri interi e razionali

numeri interi: si consideri un numero intero N in base 10 da dovere convertire nella generica base b.

Dividendo N per la base b si ottengono un quoziente N1 ed un resto R1 tali che: N = N1*b + R1.

Dividendo a sua volta N1 per la base b si ottengono un quoziente N2 ed un resto R2 tali che: N1 = N2*b + R2, che, sostituiti nell’equazione
precedente, danno N = N2*b2 + R2b + R1.

Procedendo il ragionamento (dividendo N2 per la base b) si ottiene: N = N3*b3 + R3b2 + R2b + R1.

Ad un certo punto si otterrà un quoziente Nk < b tale che il risultato di una successiva divisione per b dia come quoziente 0 ed un resto
Rk

A questo punto si avrà: N = Rk*bk-1 + + R3b2 + R2b + R1.

I resti (R1, R2, ... Rk) sono, per le proprietà della divisione, numeri contenuti nella base b, quindi l’espressione Rk*bk-1 + + R3b2 + R2b + R1
corrisponderà all’espressione in serie del numero N nella base b

Quindi il numero in base b sarà dato da (N)b = RkRk-1 R1

Calcolatori a.a. 13/14 Dario Bruneo


6
Conversione da base 10 a base b (cont.)

esempio: “convertire in base 2 il numero 23” esempio:! “convertire in base 8 il numero 196”

23:2 = 11 ! con resto 1 196:8 = 24! ! con resto 4

11:2 = 5!! con resto 1 24:8 = 3!! ! con resto 0

5:2 = 2! ! con resto 1 3:8 = 0! ! ! con resto 3

2:2 = 1! ! con resto 0 Quindi si avrà: 196 = (304)8

1:2 = 0! ! con resto 1

Quindi si avrà: ! 23 = (10111)2

esempio:! “convertire in base 16 il numero 124”

124:16 = 7! con resto C (12)

7:16 = 0!! con resto 7

Quindi si avrà: 124 = (7C)16

Calcolatori a.a. 13/14 Dario Bruneo


7
Conversione da base 10 a base b (cont.)

numeri razionali: si consideri un numero razionale F (per semplicità si considera solo la parte frazionaria) in base 10 da dovere
convertire nella generica base b

Tale numero, espresso nella base b, sarà rappresentato da 0,a-1a-2a-3... con ai compreso tra 0 e b-1

ed avrà un valore dato da:! ! F = a-1b-1 + a-2b-2 + a-3b-3 + ...

Se si moltiplica F per la base b si ottiene:!! b*F = a-1 + a-2b-1 + a-3b-2 + ...

Quindi, la parte intera di b*F (che sarà sicuramente compresa tra 0 e b-1 essendo 0 < F < 1) coincide con il coefficiente più significativo
(a-1) della rappresentazione in base b del numero F

Considerando la rimanente parte frazionaria (F1 = a-2b-1 + a-3b-2 + ...) e ripetendo il procedimento si otterrà il secondo coefficiente, infatti
b*F1 = = a-2 + a-3b-1 + ...

Si procede, nello stesso modo, per ottenere gli altri coefficienti fino ad ottenere una parte frazionaria nulla

Tale procedimento non è necessariamente esatto: una frazione decimale con un numero finito di cifre potrebbe richiedere, in base b, un
numero infinito di cifre

In tal caso il procedimento si può arrestare in funzione della precisione richiesta

Calcolatori a.a. 13/14 Dario Bruneo


8
Conversione da base 10 a base b (cont.)

esempio: !“convertire in base 2 il numero 0,25” esempio:!“convertire in base 2 il numero 0,3”

0,25*2 = 0,5 ! con parte intera 0 0,3*2 = 0,6! ! con parte intera 0

0,50*2 = 1,0 ! con parte intera 1 0,6*2 = 1,2! ! con parte intera 1

Quindi si avrà: ! 0,25 = (0,01)2 (risultato esatto) 0,2*2 = 0,4 !! con parte intera 0

0,4*2 = 0,8 !! con parte intera 0

0,8*2 = 1,6 !! con parte intera 1

esempio:!“convertire in base 2 il numero 0,81” 0,6*2 = 1,2! ! con parte intera 1

0,81*2 = 1,62 ! con parte intera 1 Quindi si avrà: 0,3 = (0,01001)2

0,62*2 = 1,24 ! con parte intera 1

0,24*2 = 0,48 ! con parte intera 0

0,48*2 = 0,96 ! con parte intera 0

0,96*2 = 1,92 ! con parte intera 1

Quindi si avrà: 0,81 = (0,11001)2 (precisione 5)

Calcolatori a.a. 13/14 Dario Bruneo


9
Conversione da base b1 a base b2

Normalmente, per la conversione da una generica base b1 ad una generica base b2 conviene sempre passare
dalla base 10!! (N)b1 ➔ (N)10 ➔ (N)b2

Ciò è dovuto alla nostra familiarità nello svolgere operazioni algebriche in base 10

Fanno eccezione le conversioni tra basi potenze dello stesso numero (ad es. 2 - 16 = 24)

In questo caso la conversione è immediata infatti ad ogni cifra esadecimale corrisponderanno 4 cifre binare

es: “convertire in base 2 il numero (1A2)16

si procede convertendo ogni singola cifra esadecimale nel corrispondente binario ottenendo: ! (1A2)16 = (0001 1010 0010)2

es: ! “convertire in base 16 il numero (1001010)2

si procede raggruppando, a partire dal bit meno significativo, le cifre binarie a 4 a 4 e convertendole nel corrispondente esadecimale, si
ottiene: (100 1010)2 = (4A)16

Analogo discorso vale per la conversione tra base 2 e base 8 (ogni cifra ottale corrisponde a 3 cifre binarie)

Calcolatori a.a. 13/14 Dario Bruneo


10
Operazioni aritmetiche in base 2

Le operazioni aritmetiche in una generica base seguono le regole dell’aritmetica decimale

In binario, essendo solo 2 i simboli, le operazioni sono notevolmente facilitate (non esistono le tabelline!):

0 + 0 = 0! 0+1=1 1 + 1 = 10 0-0=0 1-0=1 0*0=0 1*0=0 1*1=1

Somma Sottrazione

riporto ➔ 1 1 prestito ➔ 1 1 1
addendo (4)10 1 0 0 + minuendo (12)10 1 1 0 0 -
addendo (13)10 1 1 0 1 = sottraendo (7)10 1 1 1 =
risultato (17)10 1 0 0 0 1 risultato (5)10 0 1 0 1

Moltiplicazione Divisione
moltiplicando (11)10 1 0 1 1 *
dividendo ↓ divisore ↓
moltiplicatore (6)10 1 1 0 =
0 0 0 0 +
(27)10 1 1 0 1 1 1 1 (3)10
prodotti parziali ➔ 1 0 1 1 +
1 0 1 1 = - - 0 1 1 0 0 1 (9)10
risultato (66)10 1 0 0 0 0 1 0
- 1 1 risultato ↑

Calcolatori a.a. 13/14 Dario Bruneo


11
Complementi

Nello studio e nella progettazione dei calcolatori elettronici, come vedremo, giocano un ruolo fondamentale
i concetti di complemento alla base-1 e complemento alla base

Si definisce complemento alla base-1 di un numero intero positivo N (espresso in base b con un numero di
cifre n), il numero Nc-1 che si si deve sommare a N per ottenere il valore bn-1

Nc-1 = (bn-1) - N

In pratica, consiste nello scambiare ogni cifra ai con (b - 1 - ai)

Ad esempio, in decimale, il complemento alla base-1 di 37 sarà:! ! 37c-1 = (102 - 1) - 37 = 62

In base 2 tale operazione risulta molto semplice perchè consiste nell’invertire tutti i bit 1 in 0 e viceversa

Ad esempio, il complemento di 10010 sarà 01101, infatti:

1 1 1 1

1 0 0 0 0 0 - 1 1 1 1 1 -
25 = 100000! ! 25-1 = 1 = = 11111 !! ! 11111 - 10010 = 1 0 0 1 0 = = 01101
1 1 1 1 1 0 1 1 0 1
Calcolatori a.a. 13/14 Dario Bruneo
12
Complementi (cont.)

Si definisce complemento alla base di un numero intero positivo N (espresso in base b con un numero di
cifre n), il numero Nc che si si deve sommare a N per ottenere il valore bn

Nc = bn - N

Si ottiene facilmente dal complemento alla base-1 sommando 1

Ad esempio, in decimale:

Il complemento alla base di 3457 sarà dato dal suo complemento alla base-1 +1, cioè: 6542+1 = 6543

Ad esempio, in binario:

Il complemento alla base di 100111010 sarà dato dal suo complemento alla base-1 +1 cioè: 011000101 + 1 = 011000110

Calcolatori a.a. 13/14 Dario Bruneo


13
Complementi (cont.)

Si noti che:

Il calcolo del complemento di un numero (sia alla base-1 che alla base) è influenzato dal numero di cifre:

(23c-1 = 76) ≠ (023c-1 = 976)

Il complemento alla base-1 di un numero a n cifre ha sempre un numero di cifre pari a n (eventualmente con alcuni 0 all’inizio)

Il complemento alla base di un numero a n cifre ha un numero di cifre pari a n+1 nel caso in cui il numero di partenza sia composto da
tutti 0

Es. (binario)! ! 000c = 111 + 1 = 1000

Se si limita a n il numero di cifre del complemento alla base di un numero a n cifre allora il complemento alla base di 0 sarà sempre 0

Es. (binario)! ! 00000c = 11111 + 1 = 100000

Si ignora il riporto nella (n+1)-esima colonna

In binario il complemento a 2 del numero formato dal primo bit significativo a 1 e dai rimanenti bit a 0 coincide con il numero stesso

Es. (binario)! (100000)c = 011111 + 1 = 100000

Calcolatori a.a. 13/14 Dario Bruneo


14

Potrebbero piacerti anche