Sei sulla pagina 1di 31

Architettura degli Elaboratori

Rappresentazione dell’informazione

Materiale didattico per gli studenti del corso

A cura di Marta Simeoni e Salvatore Orlando

Architettura degli Elaboratori 1


Rappresentazione dell’informazione
Differenza tra simbolo e significato
n la cifra (lettera) usata per scrivere è un simbolo che rappresenta
l’informazione
n il concetto di numero (suono) corrisponde al significato
dell’informazione
Per comunicare/rappresentare informazioni è quindi necessario usare dei
simboli
n è necessaria una convenzione (rappresentazione, codifica o codice)
per associare i simboli con il loro significato

Architettura degli Elaboratori 2


Codifica o codice
Per codificare l’informazione solitamente si usa un alfabeto di simboli
n Alfabeto = insieme finito di simboli adottati per rappresentare
informazione
n Es: per rappresentare numeri nei calcolatori elettronici
n Alfabeto binario: {0, 1}
n Simboli associati con stati elettrici facilmente distinguibili (diversi
livelli di tensione elettrica)
Una codifica (codice) fornisce una corrispondenza tra
n sequenze (stringhe, configurazioni) di simboli dell'alfabeto
n i dati

Architettura degli Elaboratori 3


Codifica o codice
Solitamente, i codici fanno riferimento a sequenze di simboli di lunghezza
finita
n Alfabeto di N simboli e Sequenze di lunghezza K
n NK configurazioni possibili
n Rispetto ad un alfabeto binario (N=2)
n numero totale di configurazioni: 2K
n 2K >= s (dove s è la cardinalità dell’insieme D dei dati)
n Es.: se D comprende le 26 lettere dell’alfabeto inglese (s=26)
n sono necessarie almeno sequenze di K simboli binari, con K >= 5

Architettura degli Elaboratori 4


Codifica e tipo di informazioni
La codifica delle informazioni non numeriche può essere effettuata in
maniera semi arbitraria.
n Basta fissare una convenzione per permettere di riconoscere i dati
n Es. Codice ASCII - American Standard Code for Information Exchange -
è una codifica di caratteri alfanumerici su sequenze di simboli binari di
lunghezza k=8
La codifica dei numeri
n deve essere accurata, perché è necessario effettuare operazioni
(sommare, moltiplicare ecc.) usando la rappresentazione adottata
n di solito si adotta il sistema di numerazione arabica, o posizionale

Concentriamoci ora sulla rappresentazione dei numeri…

Architettura degli Elaboratori 5


Codifica dei numeri
Sistema di numerazione arabica in base 10 (B=10)
n cifre (simboli) appartenenti all’alfabeto di 10 simboli A={0,1,…,9}
n Il simbolo 0 corrisponde al numero zero, …, il simbolo 9 corrisponde al
numero nove
n simboli con valore diverso in base alla posizione nella stringa di simboli
in A (unità, decine, centinaia, migliaia, ecc.)
Es: 2543 = 2*103 + 5*102 + 4*101 + 3*100

Architettura degli Elaboratori 6


Sistema di codifica posizionale
Codificare i numeri naturali in una generica base B
n fissare un alfabeto A di B simboli
n fissare una corrispondenza tra
n i B simboli di A Û i primi B numeri naturali {0,1,2,…,B-1}
n numeri maggiori di B rappresentabili come stringhe di simboli di Î A :
n dn-1 … d1 d0
n valore numerico della stringa, dove la significatività delle cifre è
espressa in base alle varie potenze di B:
n Bn-1 * dn-1 + … + B1 * d1 + B0 * d0

Es: B = 8 A = {0,1,2,3,4,5,6,7} 10568 = 1 * 83 + 0 * 82 + 5 * 81 + 6 * 80


= 512 + 40 + 6 = 55810

Architettura degli Elaboratori 7


Numeri naturali in base 2
Alfabeto binario A={0,1}, dove i simboli sono detti bit, con 0 corrispondente
al numero zero ed 1 al numero uno
n Nei calcolatori i numeri sono rappresentati come sequenze di bit di
lunghezza finita
n numeri rappresentati in notazione arabica, con base B=2 (numeri binari)
n dn-1 … d1 d0 dove di Î {0,1}
Es: 10011 = 1*24 + 0*23 + 0*22 + 1*21 + 1*20 = 19

Architettura degli Elaboratori 8


Numeri naturali in base 2
Con stringhe di n bit, sono rappresentabili 2n dati (numeri diversi)
n dal numero 0 al numero 2n-1
Il valore numerico corrispondente, dove la significatività delle cifre è
espressa sulla base di una potenza di B=2, è:
n 2n-1 * dn-1 + … + 21 * d1 + 20 * d0
Es: il valore della stringa di simboli 1010 in base 2 è
n 10102 = 1*8 + 0*4 + 1*2 + 0*1 =1010

Architettura degli Elaboratori 9


Esercizi
Determinare il valore decimale dei seguenti numeri:
• 1405
• 74368
• 1223
• 1227
• 10111012
• 11013
• 3289

Architettura degli Elaboratori 10


Conversione inversa
Da base 10 a base B
Procedimento per divisioni intere successive
Sia dato un certo numero naturale N10 rappresentabile in base B come
stringa di n simboli dn-1 … d1 d0 il cui valore è:

N10 = Bn-1 * dn-1 + … + B1 * d1 + B0 * d0


Se dividiamo per B (divisione intera)
n otteniamo d0 come resto
n Quoziente: Bn-2 * dn-1 + … + B0 * d1
n Resto: d0, 0<= d0 <B
n possiamo iterare il procedimento, ottenendo d1 , d2, d3 ecc. fino ad
ottenere un Quoziente = 0

NOTA: il procedimento vale per conversioni da base B a base B´ qualsiasi.

Architettura degli Elaboratori 11


Conversione inversa: algoritmo
Q=N; i=0;
fintantoché è vero che (Q>0), ripeti:
{
di = Q % B; // Q mod B
stampa di;
Q = Q / B; // Q div B
i = i+1:
}

Q R
4 0 d0
2 0 d1
1 1 d2
0

410 = 1002= 1*22 + 0*21 + 0*20

Architettura degli Elaboratori 12


Esercizi
Qual è il valore decimale dei seguenti numeri:
1)10111012
2)11110001112
3)12013
4)23014
5)42304
6)4034216
7)6257
8)7238
Tradurre i seguenti numeri:
12710 in base 2, 3, 4, 5, 6, 7, 8
1278 in base 2, 3, 4, 5, 6, 7, 10, 11

Architettura degli Elaboratori 13


Rappresentazioni ottale ed esadecimale
Ottale: B = 8
Esadecimale: B = 16
Usate per facilitare la comunicazione di numeri binari tra umani, o tra il
computer e il programmatore
La codifica è più corta rispetto alla base 2
Esiste inoltre un metodo veloce per convertire tra base 8 (o base 16) e
base 2, e viceversa

Architettura degli Elaboratori 14


Rappresentazione ottale
B = 8, A = {0,1,2,3,4,5,6,7}
Come convertire:
n Sia dato un numero binario di 10 cifre: d9 … d1 d0, il cui valore è:

9
i
∑ ⋅ di
2
i =0

Raggruppiamo le cifre: da destra, a triplette


Poniamo in evidenza la più grande potenza di 2 comune possibile:
n (20 d9) 29 + ( 22 d8+21 d7+20 d6 ) 26 +
( 22 d5+21 d4+20 d3 ) 23 + (22 d2+21 d1+20 d0) 20

Architettura degli Elaboratori 15


Rappresentazione ottale
(20 d9) 29 + (22 d8+21 d7+20 d6) 26 +
(22 d5+21 d4+20 d3) 23 + (22 d2+21 d1+20 d0) 20
I termini tra parentesi sono numeri compresi tra 0 e 7
n si possono far corrispondere ai simboli dell’alfabeto ottale
n I fattori messi in evidenza corrispondono alle potenze di B=8:
20=80 23 =81 26 =82 29 =83

Da binario ad ottale: 10010101112 = 1 001 010 111 = 11278


Da ottale a binario: 2678 = 010 110 111 = 101101112

Architettura degli Elaboratori 16


Rappresentazione esadecimale
B = 16, A = {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}
Come convertire:
n Sia dato un numero binario di 10 cifre: d9 … d1 d0, il cui valore è:

9
i
∑2 ⋅d
i =0
i

n Raggruppiamo le cifre: da destra, 4 a 4


n Poniamo in evidenza la più grande potenza di 2 possibile:
(21 d9+20 d8 ) 28 + (23 d7+22 d6+21 d5+20 d4 ) 24 +
(23 d3+22 d2+21 d1+20 d0) 20

Architettura degli Elaboratori 17


Rappresentazione esadecimale
(21 d9+20 d8 ) 28 + (23 d7+22 d6+21 d5+20 d4 ) 24 +
(23 d3+22 d2+21 d1+20 d0) 20
I termini tra parentesi sono numeri compresi tra 0 e 15
n si possono far corrispondere ai simboli dell’alfabeto esadecimale
I fattori messi in evidenza corrispondono alle potenze di B=16:
n 20=160 24 =161 28 =162

Da binario ad esadecimale:
10010111112 = 10 0101 1111 = 25F16
Da esadecimale a binario:
A6716 = 1010 0110 0111 = 1010011001112

Architettura degli Elaboratori 18


Numeri naturali binari
Il processore che studieremo (MIPS) rappresenta i numeri interi su 32 bit
(32 bit = 1 word)

I numeri interi senza segno (unsigned) rappresentabili su 32 bit sono allora:

0000 0000 0000 0000 0000 0000 0000 0000two = 0ten


0000 0000 0000 0000 0000 0000 0000 0001two = 1ten
0000 0000 0000 0000 0000 0000 0000 0010two = 2ten
...
1111 1111 1111 1111 1111 1111 1111 1101two = 4,294,967,293ten
1111 1111 1111 1111 1111 1111 1111 1110two = 4,294,967,294ten
1111 1111 1111 1111 1111 1111 1111 1111two = 4,294,967,295ten

Architettura degli Elaboratori 19


Numeri naturali binari
I numeri interi senza segno (unsigned) rappresentabili su 64 bit sono:

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000two = 0ten

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001two = 1ten

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000010two = 2ten

. . . . . .

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111101two = 18,446,774,073,709,551,613ten

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111110two = 18,446,744,073,709,551,614ten

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111two = 18,446,744,073,709,551,615ten

Ora che abbiamo scelto una rappresentazione per i numeri binari


vediamo come usarla per eseguire operazioni (tra numeri binari) in
modo consistente

Architettura degli Elaboratori 20


Somma di numeri (naturali) binari: Esempio
Sia A = 13dieci = 01101due e B = 11dieci = 01011due

riporti: 1111
A: 01101 +
B: 01011 =
----------
11000 º 24dieci

L’algoritmo impiegato dal calcolatore per effettuare la somma è simile a


quello “carta e penna”
n le cifre sono prodotte una dopo l’altra, da quelle meno significative a
quelle più significative

Architettura degli Elaboratori 21


Algoritmo di somma di numeri (naturali) binari
Per la somma di numeri rappresentati in binario possiamo adottare la
stessa procedura usata per sommare numeri decimali
n sommare via via i numeri dello stesso peso, più l’eventuale riporto:
n La tabella per sommare 3 cifre binarie è la seguente:

di di´ rip RIS RIP

0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

Architettura degli Elaboratori 22


Overflow
L’overflow si verifica quando il risultato è troppo grande per essere
rappresentato nel numero finito di bit messo a disposizione dalle
rappresentazioni dei numeri
Þ il riporto (significativo, cioè pari a 1) fluisce fuori
Es: somma di due numeri rappresentati su 4 bit che produce un numero
non rappresentabile su 4 bit

1111
1111+
1001=

11000

Architettura degli Elaboratori 23


Sottrazione e numeri relativi
L’algoritmo impiegato nei calcolatori per sottrarre numeri binari
n è diverso da quello “carta e penna”, che usa la ben nota nozione di
“prestito” delle cifre

Non viene impiegata l’ovvia rappresentazione in modulo e segno per


rappresentare i numeri relativi
n si usa invece una particolare rappresentazione dei numeri negativi

Questa particolare rappresentazione permette di usare lo stesso algoritmo


efficiente già impiegato per la somma

Architettura degli Elaboratori 24


Possibili rappresentazioni
Modulo e Segno Complemento a uno Complemento a due
000 = + 0 000 = + 0 000 = + 0
001 = + 1 001 = + 1 001 = + 1
010 = + 2 010 = + 2 010 = + 2
011 = + 3 011 = + 3 011 = + 3
100 = - 0 100 = - 3 100 = - 4
101 = - 1 101 = - 2 101 = - 3
110 = - 2 110 = - 1 110 = - 2
111 = - 3 111 = - 0 111 = - 1

Architettura degli Elaboratori 25


Caratteristiche delle rappresentazioni
bilanciamento: nel Complemento a Due, nessun numero positivo
corrisponde al più piccolo valore negativo
numero di zeri: le rappresentazioni in Modulo e Segno, e quella in
Complemento a Uno, hanno 2 rappresentazioni per lo zero
semplicità delle operazioni: per il Modulo e Segno bisogna prima guardare i
segni e confrontare i moduli, per decidere sia il segno del risultato, e sia
per decidere se bisogna sommare o sottrarre.
Il Complemento a uno non permette di sommare numeri negativi.

Architettura degli Elaboratori 26


Complemento a 2
La rappresentazione in complemento a 2 è quella adottata dai calcolatori
per i numeri interi con segno (signed).
Il bit più significativo corrisponde al segno (0 positivo, 1 negativo)
Numeri relativi (signed) rappresentabili su 32 bit:
0000 0000 0000 0000 0000 0000 0000 0000two = 0ten

0000 0000 0000 0000 0000 0000 0000 0001two = + 1ten


0000 0000 0000 0000 0000 0000 0000 0010two = + 2ten
...

0111 1111 1111 1111 1111 1111 1111 1110two = + 2,147,483,646ten


0111 1111 1111 1111 1111 1111 1111 1111two = + 2,147,483,647ten
1000 0000 0000 0000 0000 0000 0000 0000two = – 2,147,483,648ten
1000 0000 0000 0000 0000 0000 0000 0001two = – 2,147,483,647ten
1000 0000 0000 0000 0000 0000 0000 0010two = – 2,147,483,646ten
...
1111 1111 1111 1111 1111 1111 1111 1101two = – 3ten
1111 1111 1111 1111 1111 1111 1111 1110two = – 2ten
1111 1111 1111 1111 1111 1111 1111 1111two = – 1ten
Architettura degli Elaboratori 27
Complemento a 2
Numeri relativi (signed) rappresentabili su 64 bit:
00000000 00000000 00000000 00000000 00000000 00000000 00000000two = 0ten

00000000 00000000 00000000 00000000 00000000 00000000 00000001two = 1ten

00000000 00000000 00000000 00000000 00000000 00000000 00000010two = 2ten

. . . . . .

01111111 11111111 11111111 11111111 11111111 11111111 11111111 11111101two = 9,223,372,036,854,775,805ten

01111111 11111111 11111111 11111111 11111111 11111111 11111111 11111110two = 9,223,372,036,854,775,806ten

01111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111two = 9,223,372,036,854,775,807ten

10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000two = − 9,223,372,036,854,775,808ten

10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001two = − 9,223,372,036,854,775,807ten

10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000010two = − 9,223,372,036,854,775,806ten

. . . .

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111101two = − 3ten

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111110two = − 2ten

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111two = − 1ten

Architettura degli Elaboratori 28


Complemento a 2: rappresentazione
Rappresentazione di numeri in complemento a 2 su n bit dei numeri
signed:
n 0: 0……….0
n 2n-1-1 numeri positivi:
n 1 (0 ………01)
n 2n-1-1 (massimo) (01……..11)
n 2n-1 numeri negativi:
n -|N| rappresentato dal numero unsigned ottenuto tramite la seguente
operazione:
2n-|N|
n -1: 2n-1 (1....…...1)
n -2n-1 (minimo): 2n - 2n-1 = 2n-1 (10....…0)

Architettura degli Elaboratori 29


Complemento a 2: valore
n Il valore corrispondente alla rappresentazione dei numeri positivi è
quello solito
n Per quanto riguarda i numeri negativi, per ottenere direttamente il valore
di un numero negativo su n posizioni, basta considerare
n il bit di segno (=1) in posizione n-1 con peso: -2n-1
ntutti gli altri bit in posizione i con peso 2i
Dimostrazione:
-|N| viene rappresentato in complemento a 2 dal numero
unsigned 2n-|N|
supponiamo che 2n-|N| corrisponda alla n-upla
dn-1(=1) dn-2 … d1 d0 Þ

2n-|N| = 2n-1 + 2n-2 * dn-2 + … + 21 * d1 + 20 * d0


-|N| = -2n + 2n-1 + 2n-2 * dn-2 + … + 21 * d1 + 20 * d0
-|N| = -2n-1 + 2n-2 * dn-2 + … + 21 * d1 + 20 * d0

Architettura degli Elaboratori 30


Esercizi
Tradurre i seguenti numeri:
111010101112 in ottale ed esadecimale
AF5916, 772168 in binario
Eseguire le seguenti somme tra numeri naturali espressi in binario su 8 bit
e dire in quali casi si verifica overflow.
10110111 + 00111111
11110010 + 01111111
00011111 + 11100000
10001001 + 11110001
Scrivere i seguenti numeri in complemento a due su 8 bit:
010, 10010, 13110, -12810, -5010, -510
Scrivere tutti i numeri in complemento a due rappresentabili su 5 bit
Architettura degli Elaboratori 31

Potrebbero piacerti anche