Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
13 Marzo 2013
Arch2013
2013-03-13
1 / 22
Sul sito presente il codice in C per un'applicazione che vi mostra la struttura in bit di un single passato via comand line. Il segno di un numero signed pu venir cambiato facendo il complemento a 2 L'algoritmo di Booth un po' incasinato. Rivediamolo...
Arch2013
2013-03-13
2 / 22
Booth Algoritm
Scorrere un bit alla volta, controllando quello alla sua destra In base alla coppia bisogner riportare un valore dierente, shiftato in base al bit preso in considerazione:
00 o 11: Nulla 10: sommare il complemento a 2 del primo termine 01: sommare il primo termine
Finiti i bit basta sommare tutti i termini
Arch2013
2013-03-13
3 / 22
Abbiamo visto: Operazioni con i signed Rappresentazione dei numeri decimali con Fixed Point Limite della rappresentazione Fixed Point Rappresentazione dei numeri decimali con Floating Point Conversione in Floating Points
Arch2013
2013-03-13
4 / 22
Float Operations
Idea di base
Floating Point
Idea di base
x +f y = round (x + y ) x f y = round (x y )
Andare in overow se l'esponente troppo grande Arrotondare se ci sono troppi bit nella mantissa
Arch2013
2013-03-13
5 / 22
Float Operations
Arrotondamento
Floating Point
Arrotondamento
Il medoto standard per i oat l'even rounding: in caso di valore in bilico arrotondare in modo che la cifra meno signicativa sia pari. Pi facile da implementare a livello hardware Migliore a livello statistico in caso di operazioni multiple su pi numeri arrotondati
I risultati con valori arrotondati per eccesso sono sovrastimati Quelli per difetto sottostimati
Arch2013
2013-03-13
6 / 22
Float Operations
Arrotondamento
Floating Point
Arrotondamento
Il medoto standard per i oat l'even rounding: in caso di valore in bilico arrotondare in modo che la cifra meno signicativa sia pari. Pi facile da implementare a livello hardware Migliore a livello statistico in caso di operazioni multiple su pi numeri arrotondati
I risultati con valori arrotondati per eccesso sono sovrastimati Quelli per difetto sottostimati
Ad esempio (arrotondando al millesimo): 23.432500001 23.432499999 23.432500000 23.433500000 23.433 23.432 23.432 23.434 [Arrotondato per eccesso] [Arrotondato per difetto] [A met, pari, arrotondato per difetto] [A met, dispari, arrotondato per eccesso]
Arch2013
2013-03-13
6 / 22
Float Operations
Arrotondamento
Floating Point
Arrotondamento binario
L'arrotondamento in binario funziona nella stessa maniera: Un numero binario Un numero binario
troviamo 10...02
Arch2013
2013-03-13
7 / 22
Float Operations
Arrotondamento
Floating Point
Arrotondamento binario
L'arrotondamento in binario funziona nella stessa maniera: Un numero binario Un numero binario
troviamo 10...02
Ad esempio (arrotondando all'1/8): 10.011011102 10.011101012 10.011100002 10.010100002 10.0112 10.1002 10.1002 10.0102 [Arrotondato per difetto] [Arrotondato per eccesso] [A met, pari, arrotondato per difetto] [A met, dispari, arrotondato per eccesso]
Arch2013
2013-03-13
7 / 22
Float Operations
Moltiplicazione
Floating Point
Moltiplicazione
L'idea semplice:
s2 M2 + Exp2
Normalizzazione: Se il numero
> 12
210 ,
overow
La mantissa Ricordatevi che la mantissa tutta la parte a destra della virgola una volta arrivati ad avere un numero nel formato 1.
Michele Jazzinghen Bianchi (DISI)
mk mk 1 ...m1
Arch2013 2013-03-13 8 / 22
Float Operations
Esempio Moltiplicazione
Floating Point
Esempio di moltiplicazione
32.37510
76.1562510 =?
mmmm
moltiplicati per 2 )
Moltiplicare i due numeri ignorando l'esponente (Il problema sempre moltiplicare) Normalizzare il risultato & arrotondare/overow Calcolare l'esponente nale Calcolare il segno Mettere tutto assieme U.
Michele Jazzinghen Bianchi (DISI) Arch2013 2013-03-13 9 / 22
Float Operations
Esempio Moltiplicazione
Arch2013
2013-03-13
10 / 22
Float Operations
Esempio Moltiplicazione
= 1.00110100001100011112
Arch2013
2013-03-13
10 / 22
Float Operations
Esempio Moltiplicazione
Esponente e segno
(a bx ) (c by ) = (a c ) (bx by ) = (a c ) bx +y
510
+ 610 = 1110
Exp Segno:
s =00=0
Arch2013
2013-03-13
11 / 22
Float Operations
Esempio Moltiplicazione
Esponente e segno
(a bx ) (c by ) = (a c ) (bx by ) = (a c ) bx +y
510
+ 610 = 1110
Exp Segno:
s =00=0
Struttura nale del oat: 32.37510
76.1562510 = 01000101000110100001100011110000
Arch2013 2013-03-13 11 / 22
Float Operations
Altro esempio
Altro esempio
Arch2013
2013-03-13
12 / 22
Float Operations
Altro esempio
Altro esempio
1. 0 1 0 0 1 1 0 1 0 1 1 1 x 1. 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 1 1 1 1 0 1 0 0 1 1 0 1 0 1 1 1 1 0 1 0 0 1 1 0 1 0 1 1 1 1 0 1 0 0 1 1 0 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1 1 1 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 1 1. 0 1 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1 =
Arch2013
2013-03-13
12 / 22
Float Operations
Limiti
L'altro esempio
= 54 Exp 2: 110100012 = 209 Exp = (Exp 1 Bias) + (exp 2 Bias) + Bias = (Exp Exp = 54 + 209 127 = 136 = 100010002
Exp 1: 001101102
+ Exp 2) Bias
Arch2013
2013-03-13
13 / 22
Float Operations
Limiti
L'altro esempio
= 54 Exp 2: 110100012 = 209 Exp = (Exp 1 Bias) + (exp 2 Bias) + Bias = (Exp Exp = 54 + 209 127 = 136 = 100010002
Exp 1: 001101102 Sign: Sign 1
+ Exp 2) Bias
Sign
=10=1
Arch2013
2013-03-13
13 / 22
Float Operations
Limiti
L'altro esempio
= 54 Exp 2: 110100012 = 209 Exp = (Exp 1 Bias) + (exp 2 Bias) + Bias = (Exp Exp = 54 + 209 127 = 136 = 100010002
Exp 1: 001101102 Sign: Sign 1
+ Exp 2) Bias
Sign
=10=1
Risultato:
11000100001100101001101010011110
714.415810
Arch2013
2013-03-13
13 / 22
Float Operations
Limiti
L'altro esempio
= 54 Exp 2: 110100012 = 209 Exp = (Exp 1 Bias) + (exp 2 Bias) + Bias = (Exp Exp = 54 + 209 127 = 136 = 100010002
Exp 1: 001101102 Sign: Sign 1
+ Exp 2) Bias
Sign
=10=1
Risultato:
11000100001100101001101010011110
714.415810
Arch2013
2013-03-13
13 / 22
Float Operations
Limiti
Arch2013
2013-03-13
14 / 22
Intervallo
Danni? Danni.
MIM-104
Arch2013
2013-03-13
15 / 22
Intervallo
Danni? Danni.
MIM-104
Arch2013
2013-03-13
15 / 22
Intervallo
LOL, arrotondare
Quel giorno uno Scud iraqeno se ne passa indisturbato oltre l'area di rilevamento del sistema e fa saltare in aria una caserma con 28 soldati e ne ferisce un centinaio.
Arch2013
2013-03-13
16 / 22
Intervallo
LOL, arrotondare
Quel giorno uno Scud iraqeno se ne passa indisturbato oltre l'area di rilevamento del sistema e fa saltare in aria una caserma con 28 soldati e ne ferisce un centinaio.
Arch2013
2013-03-13
16 / 22
Intervallo
LOL, arrotondare
Quel giorno uno Scud iraqeno se ne passa indisturbato oltre l'area di rilevamento del sistema e fa saltare in aria una caserma con 28 soldati e ne ferisce un centinaio.
Nuove tecnologie segrete degli stati cagnaglia? Delle spie che avevano disabilitato i sistemi di sicurezza?
Arch2013
2013-03-13
16 / 22
Intervallo
LOL, arrotondare
Quel giorno uno Scud iraqeno se ne passa indisturbato oltre l'area di rilevamento del sistema e fa saltare in aria una caserma con 28 soldati e ne ferisce un centinaio.
Nuove tecnologie segrete degli stati cagnaglia? Delle spie che avevano disabilitato i sistemi di sicurezza? Botta di sga?
Arch2013
2013-03-13
16 / 22
Intervallo
LOL, arrotondare
Quel giorno uno Scud iraqeno se ne passa indisturbato oltre l'area di rilevamento del sistema e fa saltare in aria una caserma con 28 soldati e ne ferisce un centinaio.
Nuove tecnologie segrete degli stati cagnaglia? Delle spie che avevano disabilitato i sistemi di sicurezza? Botta di sga?
Arch2013
2013-03-13
16 / 22
Intervallo
LOL, arrotondare
MIM-104,
per tenere
traccia del tempo, moltiplicava per 1/10 il tempo tracciato dall'orologio in tempo
= 0.0001100110011001100110011001100...2
Noi, per, possiamo avvalerci solo di un numero nito di bit, quindi la rappresentazione a 24 bit sar: 0.000110011001100110011002 Introducendo un errore, per ogni operazione, pari a: 0.0000000000000000000000011001100...2
Michele Jazzinghen Bianchi (DISI) Arch2013
0.00000009510
2013-03-13 17 / 22
Intervallo
LOL, arrotondare
L'uptime mi uccide.
Il sistema di controllo del oltre 100 ore.
MIM-104
era acceso da
Ora, se fate due conti, questo vuol dire che l'errore accumulato era di
100h
60
m h
60
s m
10 0.000000095 = 0.342s
Arch2013
2013-03-13
18 / 22
Intervallo
LOL, arrotondare
L'uptime mi uccide.
Il sistema di controllo del oltre 100 ore.
MIM-104
era acceso da
Ora, se fate due conti, questo vuol dire che l'errore accumulato era di
100h
60
m h
60
s m
10 0.000000095 = 0.342s
Nice. In .342s uno Scud si fa circa 700m. Questo basta per fare in modo che un sistema non si accorga neanche della presenza del missile e non lo intercetti. youhadonejob.jpg
Arch2013
2013-03-13
18 / 22
Float Operations - 2
Somma/Sottrazione
Floating Point
Somma
Anche qu l'idea di base abbastanza semplice:
Exp2
Avremo quindi: Exp = Exp1 S ed M saranno il risultato della somma (o sottrazione) dei due termini allineati
M andr comunque normalizzata: Se M> 1 allora dobbiamo shiftare a destra, aumentando Exp di 1 Se M< 1 allora dobbiamo shiftare a sinistra, diminuendo Exp di 1 Settiamo overow ed arrotondiamo se necessario.
Michele Jazzinghen Bianchi (DISI) Arch2013 2013-03-13 19 / 22
Float Operations - 2
Esempio Somma
Floating Point
Esempio di somma
Float 1: 01000011101110100100000000000000 Float 2:
Arch2013
2013-03-13
20 / 22
Float Operations - 2
Esempio Somma
Floating Point
Esempio di somma
Float 1: 01000011101110100100000000000000 Float 2:
26 = 0.010111110112 28
1. 0 1 1 1 0 1 0 0 1 +
0. 0 1 0 1 1 1 1 1 0 1 1 = 1. 1 1 0 1 0 0 1 1 1 1 1
Arch2013
2013-03-13
20 / 22
Float Operations - 2
Esempio Somma
Floating Point
Esempio di somma
Float 1: 01000011101110100100000000000000 Float 2:
26 = 0.010111110112 28
1. 0 1 1 1 0 1 0 0 1 +
0. 0 1 0 1 1 1 1 1 0 1 1 = 1. 1 1 0 1 0 0 1 1 1 1 1
Risultato: 01000011111010011111000000000000
= 467.87510
Arch2013
2013-03-13
20 / 22
Float Operations - 2
Esempio Sottrazione
Floating Point
Esempio di sottrazione
Float 1: 01000101000101101100100000000000 Float 2:
Arch2013
2013-03-13
21 / 22
Float Operations - 2
Esempio Sottrazione
Floating Point
Esempio di sottrazione
Float 1: 01000101000101101100100000000000 Float 2:
0. 0 0 1 0 0 1 0 1 1 0 1 1 0 0 1 + 0. 0 1 0 0 1 1 0 0 0 1 0 0 1 1 0 = 0. 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1. 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1
Arch2013
2013-03-13
21 / 22
Float Operations - 2
Esempio Sottrazione
Floating Point
Esempio di sottrazione
Float 1: 01000101000101101100100000000000 Float 2:
0. 0 0 1 0 0 1 0 1 1 0 1 1 0 0 1 + 0. 0 1 0 0 1 1 0 0 0 1 0 0 1 1 0 = 0. 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1. 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1
Risultato: 11000110110001110000000100000000
= 2.5472510 104
2013-03-13 21 / 22
Arch2013
Float Operations - 2
Divisione
Floating Point
Divisione
Lasciata per ultima perch io odio la divisione (E poi saltano in aria caserme).
Come mai?
Arch2013 2013-03-13 22 / 22
Float Operations - 2
Divisione
Floating Point
Divisione
Lasciata per ultima perch io odio la divisione (E poi saltano in aria caserme).
Voi non la odiavate alle ele... Med... Super... Vabbeh, quando si fa?
Come mai?
Arch2013 2013-03-13 22 / 22
Float Operations - 2
Divisione
Floating Point
Divisione
Lasciata per ultima perch io odio la divisione (E poi saltano in aria caserme).
Voi non la odiavate alle ele... Med... Super... Vabbeh, quando si fa?
molto simile alla moltiplicazione, cambiano solo due cose: Fare la divisione invece che il prodotto tra le mantisse Exp, alla ne, sar (Exp1 - Exp 2) + Bias Lo faremo la prossima volta.
1
Come mai?
Arch2013 2013-03-13 22 / 22