Moltiplicazioni e Divisioni. G. Michele Pinna (1)

Documenti analoghi
Unità aritmetica e logica

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

Firmware Division & Floating pointer adder

Firmware Division & Floating gpointer adder

Architettura degli Elaboratori

Aritmetica dei Calcolatori - Operazioni

Numeri reali. Notazione scientifica (decimale) Floating Point. Normalizzazione. Esempi. Aritmetica del calcolatore (virgola mobile)

0ROWLSOLFD]LRQHH'LYLVLRQH WUDQXPHULUHODWLYL

Rappresentazione di numeri reali. Architetture dei Calcolatori (Lettere. Perché la rappresentazione in virgola mobile

Moltiplicazione e Divisione tra numeri relativi

CONVERSIONE DA DECIMALE A BINARIO

LA TRASMISSIONE DELLE INFORMAZIONI SECONDA PARTE 1

Esercitazione del 2/3/2010- Numeri binari e conversione

Rappresentazione di numeri reali. Rappresentazione in virgola mobile. Perché la rappresentazione in virgola mobile. Rappresentazione in virgola mobile

Firmware Division. Prof. Alberto Borghese Dipartimento di Informatica Università degli Studi di Milano

Rappresentazione dei Numeri

Codifica. Rappresentazione di numeri in memoria

Laboratorio del 21/10/2010- Numeri binari e conversione

Lezione 3. I numeri relativi

Rappresentazione in virgola mobile

Sistemi di Numerazione Binaria

Sistemi di Numerazione Binaria

La codifica. dell informazione

Esercitazione del 09/03/ Soluzioni

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

Rappresentazione. Notazione in complemento a 2. Complemento a due su 3 e 4 bit Complemento a due

Sistemi di Numerazione Binaria

Rappresentazione di numeri relativi (interi con segno) Rappresentazione di numeri interi relativi (con N bit) Segno e Valore Assoluto

Riassunto Nell'esercitazione di oggi e' stata introdotta la codifica binaria naturale, intera e razionale in virgola fissa. Il materiale teorico

Rappresentazione dei numeri reali in un calcolatore

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Esercitazione n. 5. Rappresentazione dei numeri

NUMERO RELATIVO. È caratterizzato da: segno positivo (+) o negativo (-) parte numerica che è detta valore assoluto

ESERCIZIARIO DI MATEMATICA

Aritmetica dei Calcolatori Elettronici

Rappresentazione numeri reali

Rappresentazione dei Dati

Calcolatori Elettronici Parte II: Sistemi di Numerazione Binaria. Prof. Riccardo Torlone Università di Roma Tre

Fondamenti di Informatica - 1. Esercizi A.A. 2011/2012

La codifica. dell informazione

Codifica binaria. Rappresentazioni medianti basi diverse

I sistemi di numerazione e la numerazione binaria

Operazioni in N Le quattro operazioni Definizioni e Proprietà

Calcolatori Elettronici Parte III: Sistemi di Numerazione Binaria

Esame di INFORMATICA (*) Operazioni Aritmetiche: Somma. Lezione 3. Operazioni Aritmetiche: Somma. Operazioni Aritmetiche: Somma

La Rappresentazione dell Informazione

Somma di numeri binari

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

SECONDA UNIVERSITA DEGLI STUDI DI NAPOLI CORSI DI LAUREA IN INGEGNERIA AEROSPAZIALE E MECCANICA ELEMENTI DI PROGRAMMAZIONE

Esercitazioni su rappresentazione dei numeri e aritmetica. Interi unsigned in base 2

Esercizi su Sistemi di Numerazione Binaria. Prof. Riccardo Torlone Università di Roma Tre

Decimale, binaria,esadecimale

Soluzioni Esercizi su rappresentazione binaria dell informazione

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Sistema Numerico Decimale

Lezione 7 ALU: Moltiplicazione e divisione

LEZIONE 1. del 10 ottobre 2011

Rappresentazione dell informazione. Argomenti trattati: Codifica: Teoria generale. Proprietà di una codifica:

Le quattro operazioni fondamentali

Codifica di informazioni numeriche

Rappresentazione di numeri interi

Calcolatori Elettronici Parte II: Sistemi di Numerazione Binaria. Prof. Riccardo Torlone Università di Roma Tre

Argomenti trattati: Rappresentazione dell informazione. Proprietà di una codifica: Codifica: Teoria generale

Aritmetica dei Calcolatori

Aritmetica dei Calcolatori

1.2f: Operazioni Binarie

Rappresentazione dei numeri reali

APPUNTI DI INFORMATICA

Conversione binario-decimale. Interi unsigned in base 2. Esercitazioni su rappresentazione. dei numeri e aritmetica

Utilizzata per rappresentare numeri frazionari nella. numero =(mantissa) 2 esponente. Il formato piu utilizzato e quello IEEE P754, rappresentato

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Sperimentazioni di Fisica I mod. A Lezione 3

Algebra di Boole e porte logiche

Le operazioni fondamentali in R

Moltiplicazione. Divisione. Multipli e divisori

La rappresentazione dei numeri. La rappresentazione dei numeri. Aritmetica dei calcolatori. La rappresentazione dei numeri

Esercitazione Informatica I (Parte 1) AA Nicola Paoletti

Rappresentazione dell Informazione

Numeri frazionari. sistema posizionale. due modi: virgola fissa virgola mobile. posizionale, decimale

Interi unsigned in base 2. Esercitazioni su rappresentazione dei numeri e aritmetica. Conversione binario-decimale

04 Aritmetica del calcolatore

Addizionatori: metodo Carry-Lookahead. Costruzione di circuiti combinatori. Standard IEEE754

Rappresentazione dell informazione. Argomenti trattati: Codifica: Teoria generale. Proprietà di una codifica:

Rappresentazione dell informazione

Aritmetica dei calcolatori. La rappresentazione dei numeri

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Esempio 1: virgola mobile

MAPPA MULTIPLI E DIVISORI

Interi positivi e negativi

Introduzione. Elementi di Informatica. Sistemi di Numerazione Addizionali. Sistemi di Numerazione. Sistemi di Numerazione Romano

Elementi di Informatica e Programmazione

Le quattro operazioni fondamentali

Rappresentazione numeri relativi e reali

I sistemi di numerazione. Informatica - Classe 3ª, Modulo 1

Il Sistema di numerazione decimale

Operatori di confronto:

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due

Fondamenti di Programmazione. Sistemi di rappresentazione

Programmazione I Paolo Valente /2017. Lezione 6. Notazione posizionale

Richiami di aritmetica (1)

Transcript:

Moltiplicazioni e Divisioni G. Michele Pinna (1)

moltiplicazione Abbiamo 3 versioni: Alu a 64 bit, due registri a 64 bit ed uno a 32 Alu a 32 bit, un registro a 64 e due a 32 Alu a 32 bit, un registro a 64 ed uno a 32 Osservazione: ho un solo algoritmo gli altri sono sono basati su osservazioni su come risparmiare spazio Per le moltiplicazioni con il segno algoritmo di Booth (2)

Moltiplicazione (1/3) Il risultato su 2n bit tutti posti a zero 1. controllo la cifra più a destra del moltiplicatore a) se è 0 non fare nulla b) se è 1 allora somma il moltiplicando al risultato 2. scala il moltiplicando di 1 bit a sinistra 3. scala il moltiplicatore di 1 bit a destra 4. quante volte? n (3)

Moltiplicazione (2/3) inizio moltiplicatore0 = 1 1 1 a moltiplicatore0 = 0 2 3 fine si n volte? no (4)

Moltiplicazione (3/3) moltiplicando 64 bit scalamento a sinistra ALU a 64 bit moltiplicatore scalamento a destra 32 bit prodotto scrittura 64 bit controllo (5)

Moltiplicazione rivista (1/3) Il risultato su 2n bit tutti posti a zero 1. controllo la cifra più a destra del moltiplicatore a) se è 0 non fare nulla b) se è 1 allora somma il moltiplicando alla parte sinistra del risultato 2. scala il risultato di 1 bit a destra 3. scala il moltiplicatore di 1 bit a destra 4. quante volte? n (6)

Moltiplicazione rivista (2/3) inizio moltiplicatore0 = 1 1 1 a moltiplicatore0 = 0 2 3 fine si n volte? no (7)

Moltiplicazione rivista (3/3) moltiplicando 32 bit ALU a 32 bit moltiplicatore scalamento a destra 32 bit prodotto scrittura scalamento a destra 64 bit controllo (8)

Moltiplicazione finale (1/3) Il risultato su 2n bit in cui mettiamo il moltiplicatore 1. controllo la cifra più a destra del risultato a) se è 0 non fare nulla b) se è 1 allora somma il moltiplicando alla parte sinistra del risultato 2. scala il risultato di 1 bit a destra 3. scala il moltiplicatore di 1 bit a destra 4. quante volte? n (9)

Moltiplicazione finale (2/3) inizio risultato0 = 1 1 1 a risultato0 = 0 2 3 fine si n volte? no (10)

Moltiplicazione finale (3/3) moltiplicando 32 bit ALU a 32 bit prodotto scrittura scalamento a destra 64 bit controllo (11)

Numeri con il segno Faccio le moltiplicazioni normalmente e mi ricordo i segni Applico le solite regole per determinare il segno Oppure: algoritmo di Booth (12)

(13) Algoritmo di Booth (1/3) Il risultato su 2n bit in cui mettiamo il moltiplicatore e un bit b di controllo posto a 0 1. controllo la cifra più a destra del risultato assieme al bit di controllo (r 0 b) a) se sono 10 allora sottrai dal risultato il moltiplicando (nella parte sinistra) b) se è 11 o 00 allora non fare nulla c) se sono 01 allora somma il moltiplicando alla parte sinistra del risultato 2. scala il risultato di 1 bit a destra ed inserisci r 0 in b 3. quante volte? n

Algoritmo di Booth (2/3) inizio risultato0 = 1 era 0 1 si no 1 a risultato0 = 0 risultato0 = 1 1 risultato0 = 0 1 c 2 (14) fine si n volte? no

Algoritmo di Booth (3/3) moltiplicando 32 bit Uso l ultima versione ALU a 32 bit prodotto scrittura scalamento a destra 64 bit controllo (15)

Perché funziona? a i a i+1 Operazione 0 0 0 1 1 0 1 1 a i+1 a i = { 0 +1-1 Non fare nulla Sommare b Sottrarre b Non fare nulla Non fare nulla Sommare b Sottrarre b (16) Tenete presente che scalare il moltiplicando è come fare x2 k

La divisione Un po più complicata L idea è la solita, sottrazioni successive (17)

Divisione (1/3) Metto 0 nel registro quoziente (32 bit) Metto il divisore nella parte sinistra del registro divisore (64 bit) Metto il dividendo nella parte destra del registro resto (64 bit) 1. Sottraggo il divisore dal resto 2. Controllo il resto a) se è < 0 ripristino il valore originale del resto e scalo di una cifra a sinistra il quoziente (inserendo uno 0) b) se è > o uguale a 0 allora scalo di una cifra a sinistra il quoziente inserendo un 1 3. scala il divisore di 1 bit a destra 4. quante volte? n + 1 (18)

Divisione (2/3) inizio 1 a resto < 0 2 resto 0 2 a 2 b 3 no n +1 volte? si fine (19)

Divisione (3/3) divisore 64 bit scalamento a destra ALU a 64 bit quoziente scalamento a sinistra 32 bit resto scrittura 64 bit controllo (20)

Divisione rivista (1/3) Come prima mi accorgo che il divisore da 32 bit mi basta Scaliamo a sinistra il resto al posto dello scalare a destra il divisore (21)

(22) Divisione rivista (2/3) Metto 0 nel registro quoziente (32 bit) Metto il dividendo nel registro resto (64 bit) 1. Sottraggo il divisore dal resto (i 32 bit alti) 2. Controllo il resto a) se è < 0 ripristino il valore originale del resto e scalo di una cifra a sinistra il quoziente (inserendo uno 0) b) se è > o uguale a 0 allora scalo di una cifra a sinistra il quoziente inserendo un 1 3. scala il resto di 1 bit a sinistra 4. quante volte? n + 1

Divisione rivista (3/3) divisore 32 bit ALU a 32 bit quoziente scalamento a sinistra 32 bit resto scrittura 64 bit scalamento a sinistra controllo (23)

Divisione finale (1/3) avevamo eliminato il moltiplicatore? eliminiamo il quoziente dove lo mettiamo? nel resto (24)

Divisione finale (2/3) inizio scalamento di 1 bit a sinistra del resto sottrarre il divisore dalla metà sinistra del resto e mettere il risultato nella metà sinistra del resto resto < 0 ripristinare valore originale scalare a sinistra resto inserendo 0 resto? resto 0 scalare a sinistra resto inserendo 1 (25) fine scala a destra metà sinistra del resto si n volte? no

Divisione finale (3/3) divisore 32 bit ALU a 32 bit 64 bit scalamento a sinistra scrittura resto scalamento a destra controllo (26)

Come faccio a fare divisioni con il segno? Si fanno le divisioni tra i numeri rappresentati normalmente e poi si mettono i segni corretti nei risultati Attenzione al segno del resto (27)

(28) Virgola mobile.

Sommare due numeri in virgola mobile Allineare la virgola (esponenti uguali) Sommare le mantisse Normalizzare di nuovo, se è necessario Vediamo come (29)

Algoritmo della somma inizio confronta gli esponenti se sono diversi aumenta il minore fino a che non diventano uguali somma le mantisse normalizza la somma (o scalando a destra e incrementando e, o scalando a sinistra e decrementando e) eccezione si problemi? no no normalizzato? arrotondamento mantissa (30) fine si

Vediamo l hardware. complesso. Sign Exponent Significand Sign Exponent Significand Small ALU Compare exponents Exponent difference 0 1 0 1 0 1 Control Shift right Shift smaller number right Big ALU Add 0 1 Increment or decrement 0 1 Shift left or right Normalize Rounding hardware Round (31) Sign Exponent Significand

moltiplicazione Sommo gli esponenti Moltiplico le mantisse Normalizzo Determino il segno (positivo se concordi, negativo altrimenti) (32)

L algoritmo della moltiplicazione inizio somma gli esponenti (sottraendo la costante di polarizzazione) eccezione moltiplica le mantisse normalizza il prodotto (scalando a destra e incrementando e) si problemi? fine no (33) determina il segno no normalizzato? si arrotondamento mantissa

(34) Arrotondamento (in decimale) Fisso il numero di cifre dopo la virgola Devo rappresentare un numero con più cifre dopo la virgola normalizzato considero l ultima cifra rappresentabile considero la prima cifra che non posso rappresentare (cifra di guardia) considero la seconda cifra che non posso rappresentare (cifra di arrotondamento) rappresentabile guardia arrotondamento x 0-4 0-9 x 5 0 x+1 5-9 0-9

E in binario? Dipende, considero o due o tre bit I tre bit dipendono da situazioni particolari Predispongo dell hw per fare questo (35)