Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
Rappresentazione dell'informazione
slide a cura di Salvatore Orlando, Marta Simeoni, Andrea Torsello
Q R
4 0 d0
2 0 d1
1 1 d2
0
9
i
∑ ⋅ di
2
i =0
Da binario ad esadecimale:
10010111112 = 10 0101 1111 = 25F16
Da esadecimale a binario:
A6716 = 1010 0110 0111 = 1010011001112
Ora che abbiamo scelto una rappresentazione per i numeri binari vediamo
come usarla per eseguire operazioni (tra numeri binari) in modo consistente
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
1111
1111+
1001=
11000
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 ⇒
00010101000
Complementa a uno
11101010111 +
1 =
11101011000
n Esempio Alg. 2
00010101000
Complementa a uno fino alla cifra 1 meno significativa
11101011000
Architettura degli Elaboratori
Regole per complementare a 2
Alg. 1: inverti tutti i bit e somma 1 (dimostrazione)
n La rappresentazione in complemento a 2 del numero negativo -|N| è:
1 dn-2 … d1 d0,
n Il valore è:
-|N| = -2n-1 + 2n-2 * dn-2 + … + 21 * d1 + 20 * d0 Sommando e
n Allora:
sottraendo 1
|N| = 2n-1 - 2n-2 * dn-2 - … - 21 * d1 - 20 * d0 =
= (2n-1-1)+1 - (2n-2 * dn-2 + … + 21 * d1 + 20 * d0) =
= (2n-1 * 0 + 2n-2 * 1 + … + 21 * 1 + 20 * 1) -
(2n-2 * dn-2 + … + 21 * d1 + 20 * d0) + 1 =
= ( 2n-1 * 0 + 2n-2 * (1- dn-2 ) + … + 20 * (1 - d0) ) + 1
Poiché serie
Geometrica ⇒ Invertendo tutti i bit della rappresentazione di -|N| otteniamo
0(1- dn-2 )…(1 - d0)
n n +1
i 1− q dove 0=1-dn-1
∑q
i =0
=
1− q Il valore del numero complementato (positivo) è:
2n-2 * (1- dn-2 ) + … + 20 * (1 - d0)
Sommando 1, otteniamo proprio il valore di |N| sopra derivato
Esempio:
7- 0111- 7 + 0111+
6= 0110= (-6)= 1010=
1 0001 1 0001
tipo di operazione
somma sottrazione
01111 00000
01111+ 01100+
00001= 00001=
10000 01101
n Overflow se |A|+|B|>2n-1
A=10100 B=10101 (OVERFLOW ⇒ due ultimi riporti discordi)
A=10111 B=11101 (NON OVERFLOW ⇒ due ultimi riporti concordi)
10100 11111
10100+ 10111+
10101= 11101=
01001 10100
Sembra quindi che la regola dei riporti funzioni sia per la somma di due
numeri positivi che per la somma di due numeri negativi. Vedremo però che
esiste un’eccezione a questa regola…
Esempio: 1.0 • 21 = 2
(-1)S•(1+m)•2(e - polarizzazione)
Si consideri che:
• l’esponente 00...0 è così riservato per lo zero
• l’esponente 11...1 è così riservato per casi particolari (numero fuori
dall’insieme dei valori rappresentabili -- infinito)
segno: negativo
esponente: 000010112 = 1110
mantissa: 0.012 = 0. 2510
Il numero rappresentato è: (-1)1•(1+ 0.25)•2(11-127) = - 1. 25 •2(-116)
Architettura degli Elaboratori
Somma di numeri FP
Algoritmo per sommare numeri FP
Somma: 1.01000 +
0.11101 =
----------------
10.00101 • 22
Normalizzazione: 1.000101 • 23
Arrotondamento: 1.0001 • 23
N1=
N2=
Esponente:
Somma:
10.10101100 +
00.00011111 =
--------------------
10.11001011 numero negativo!
Arrotondamento/Troncamento
n La mantissa ottenuta è rappresentabile su 23 bit. Quindi non dobbiamo
introdurre errori nella rappresentazione (la rappresentazione del numero
è in questo caso accurata)
Numero FP risultato:
sris = 1
eris = 130
mris= 001101010…0
N 1: +
N 2: =
--------------------------------------------------------------------------
RIS:
0A (Line Feed) 41 A
0D (Carriage Return) ... …..
30 0
1B (Escape) 5A Z
... …..
20 (Space) 39 9 61 a
2C , ... …..
2E . 7A z
0010
0000
0001
0100
0101
1010
1000
1001
0011
0110
1011
1100
1101
0111
1110
1111
MSB
op rs rt rd shamt funct
n ecc.
Es: C = 11010011
C’= 11110010 allora H(C,C’) = 2