D:\Documenti Ea\Informatica B\Esercitazioni\ Esercitazione 7\codBin.txt sabato 6 novembre

Documenti analoghi
Esercizio 1) Un tuo amico ha calcolato che -77 ha rappresentazione , ma non si ricorda quale codica ha usato. tra: binario naturale

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

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

Esercitazione n. 5. Rappresentazione dei numeri

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

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

Informatica Generale 02 - Rappresentazione numeri razionali

Esercitazioni di Fondamenti di Informatica - Lez. 1 02/10/2018

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

Rappresentazione in virgola fissa. Rappresentazione in virgola mobile (floating point)

Unità aritmetica e logica

Lezione 3. I numeri relativi

Rappresentazione di numeri in virgola mobile

Conversione binario-ottale/esadecimale. Conversione binario-ottale/esadecimale. Rappresentazione di Numeri Interi Positivi (numeri naturali)

Esempio: Il formato floating point standard IEEE P754 (precisione semplice)

Esercitazione 0. Alberto Marchesi Informatica A Ingegneria Matematica (sez. 2) 25 Settembre 2019

Parte III Indice. Rappresentazione dei valori frazionari. Esercizi. in virgola fissa in virgola mobile III.1. Fondamenti di Informatica

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

Codifica dell Informazione per il Calcolo Scientifico

La Rappresentazione dell Informazione

Rappresentazione dei Dati

Rappresentazione dell Informazione

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

La "macchina" da calcolo

Codifica dell informazione numerica. Matteo Re, Nicola Basilico,

N= a i b i. Numeri e numerali. Sistemi di Numerazione Binaria. Sistemi posizionali. Numeri a precisione finita

Informatica e Laboratorio di Programmazione Sistema Binario Alberto Ferrari. Alberto Ferrari Informatica e Laboratorio di Programmazione

Sistemi di numerazione

Codifica. Rappresentazione di numeri in memoria

Calcolatori Elettronici Parte III: Sistemi di Numerazione Binaria

Sistemi di Numerazione Binaria

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

Introduzione. Introduzione

Floating pointer adder & Firmware Division. Sommario

Firmware Division & Floating gpointer adder

Esercitazioni di Fondamenti di Informatica - Lez. 1 - Soluzioni

Codifica dell informazione numerica

Sistemi di Numerazione Binaria

Lezione 9 Aritmetica in virgola mobile (3)

Sistemi di Numerazione Binaria a i b i. a m a m-1... a 0. a -1 a a -k

Sistemi di Numerazione Binaria

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

Lezione 1. Rappresentazione dei numeri. Aritmetica dei calcolatori. Rappresentazione dei numeri naturali in base 2

Firmware Division & Floating pointer adder

Informatica e Bioinformatica: Rappresentazione dell Informazione

CONVERSIONE DA DECIMALE A BINARIO

Esercitazione del 03/03/ Soluzioni

Numeri frazionari nel sistema binario

Esercitazione del 09/03/ Soluzioni

Aritmetica dei Calcolatori

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

Aritmetica dei Calcolatori

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

Modulo e segno Complemento a 1 (CA1) Complemento a 2 (CA2)

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico

Rappresentazione dell informazione

CONVERSIONE BINARIO DECIMALE NB: Convertire in decimale il numero binario N = N =

Esempi - overow Considerando numeri binari di 4 bit, eettuare la somma (9) 10 =(1001) 2 (7) 10 =(0111) Il risultat

Esercitazione del 05/03/ Soluzioni

Numeri binari Conversioni numeriche: decimali-binario Operazioni algebriche con numeri binari Russo ing. Saverio

Codifica dell informazione numerica

SISTEMI DI NUMERAZIONE POSIZIONALI

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

Notazione posizionale. Codifica binaria. Rappresentazioni medianti basi diverse. Multipli del byte

Esercitazioni Informatica A. M. M. Bersani

Rappresentazione in virgola mobile Barbara Masucci

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

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

Università di Torino. Indice. Rappresentazione dei valori frazionari. in virgola fissa in virgola mobile. Esercizi III.1. Fondamenti di Informatica

Lezione 7 Aritmetica in virgola mobile (1)

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

Numeri in virgola mobile

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

Rappresentazione virgola mobile (Floating Point)

Rappresentazione dell informazione

Rappresentazione dei numeri reali in un calcolatore

Elementi di Informatica e Programmazione

Notazioni convenzionali per la rappresentazione di. tra esseri umani Rappresentazione dei dati di tipo numerico

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri Roberto Navigli

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

Lezione 2. Rappresentazione dell informazione

Somma di numeri binari

Rappresentazione dei numeri. Rappresentazione di insiemi numerici mediante insiemi finiti di stringhe di bit Problemi:

Interi positivi e negativi

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

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

Rappresentazione dei dati in memoria

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

Codifica dei Numeri. Informatica B 12 Novembre 2014 Giacomo Boracchi Informatica B, AA 14/15, Giacomo Boracchi

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

Rappresentazione dell Informazione. Emilio Di Giacomo e Walter Didimo

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

Numeri con segno ed in virgola

Rappresentazione dell informazione

Numero decimale con la virgola -- numero binario

Aritmetica dei Calcolatori Elettronici

Transcript:

Esercizio: codifica binaria in C2 in virgola fissa su 14 bit (8 bit per parte intera e 6 per parte frazionaria) di valore decimale -123,21 Scomponiamo il numero dato come SOMMA di un numero intero e di un numero decimale a parte intera NULLA. -123,21 = -(123) + (-(0,21)) Procediamo ora alla codifica dei due numeri SEPARATAMENTE per poi sommarli in binario alla fine. 1) Codifica binaria in C2 su 8 bit di -123: * Se il numero è positivo: --> Calcolo il suo valore su n-1 bit (7 in questo caso) in binario NATURALE --> Aggiungo uno 0 a sinistra (che rappresenta il segno +) * Se il numero è negativo: --> Ne prendo il modulo ( -123 o abs(-123) ) --> Calcolo il suo valore su n-1 bit (7 in questo caso) in binario NATURALE --> Aggiungo uno 0 a sinistra (che rappresenta il segno +) --> Inverto TUTTI i bit (gli 1 diventano 0 e viceversa) --> Sommo 1 (che si scrive come n-1 zeri e un 1. ES: se n = 8 bit ---> 00000001) Procediamo seguendo i passi appena indicati: Il numero è positivo o negativo? ------> NEGATIVO! (-123). Ne prendo il modulo: 123. Calcolo la sua codifica in binario NATURALE su 7 bit: METODO 1: 123:2 = 61 resto 1 61:2 = 30 resto 1 30:2 = 15 resto 0 15:2 1 7:2 1 3:2 1 1:2 1 0 Quindi 123 ==> 1111011 NB: I bit che si trovano si scrivono da destra a sinistra!!! Cioè il bit a 1 relativo alla divisione intera 123:2 è IL BIT PIU' A DESTRA NELLA CODIFICA!!! METODO 2: Se siete smart sapete che con 7 bit si numera da 0 a 127. 123 = 127-4 Quindi: 127 = 1111111 e 123 = 1111011 (ho messo a zero il terzo bit relativo a 2^2 = 4). Proseguiamo: Aggiungo uno zero a sinistra: 01111011 (8 bit). Inverto i bit: 10000100 (8 bit) Sommo uno (= 00000001) : 10000100 + 00000001 = 10000101 10000101 = -123 in codifica C2. Poiché il numero finale deve avere 14 bit (8+6), scrivo già -123 con le 6 cifre decimali... le quali sono OVVIAMENTE nulle (-123,0). -1-

10000101,000000 2) Codifica binaria in C2 su 6 bit di valore decimale di parte frazionaria -0,21: Codifica binaria in C2 su 6 bit di valore decimale 0,21: I passi per convertire il numero -0.21 in binario C2 sono gli stessi di prima. Per la parte decimale l'algoritmo prevede di MOLTIPLICARE per 2 (e non DIVIDERE, come prima) e associare a tale calcolo un bit che ha come valore la parte intera del risultato della moltiplicazione. 0,21 x 2 0,42 --> 0 0,42 x 2 0,84 --> 0 0,84 x 2 1,68 --> 1 (sottraggo 1 --> 1,68-1 = 0,68) 0,68 x 2 1,36 --> 1 (sottraggo 1 --> 1,36-1 = 0,36) 0,36 x 2 0,72 --> 0 0,72 x 2 1,44 --> 1 (sottraggo 1 --> 1,44-1 = 0,44) 0,44 x 2 0,88 --> 0 0,88 x 2 1,76 --> 1 (sottraggo 1 --> 1,76-1 = 0,76) 0,76 x 2 1,52 --> 1 (sottraggo 1 --> 1,52-1 = 0,52) 0,52 x 2 1,04 --> 1 (sottraggo 1 --> 1,04-1 = 0,04) 0,04 x 2 0,08 --> 0 0,08 x 2 0,16 --> 0... 0,21 -> su 6 bit(-> approssimato, ho troncato a 6 bit!!) vale 001101 NB: In questo caso i bit sono scritti da SINISTRA e DESTRA man mano che vengono trovati! Aggiungo uno zero a sinistra: 0001101 (7 bit... ma il primo 0 cade sulla parte intera quindi OK!). Inverto i bit: 1110010 (7 bit) Sommo uno (= 0000001) : 1110010 + 0000001 = 1110011 Quindi, codifica binaria in C2 di -0,21 è 1,110011 (approssimato!) NOTATE che sono 7 bit di cui 6 di parte decimale, come richiesto. Anche qui scriviamo il numero trovato su 14 bit: 11111111,110011 SI ESTENDE CON 1 perché "replicando in modo progressivo il bit di segno a sinistra il valore del numero non muta". (Slide Cod. Binaria, pag 24) 3) Sommiamo le due componenti. -123,21 = -(123) + (-(0,21)) Quindi allineando i numeri: - 123,0 = 10000101,000000-0.21 = 11111111,110011 (approssimato) ---- -2-

10000100,110011 (approssimato), IMPORTANTE! --> (con riporto perso che non da overflow dato che i due addendi sono tra loro concordi e il risultato è concorde con loro) Quindi, -123,21 in C2 in virgola fissa su 14 bit (8 bit per parte intera e 6 per parte frazionaria) è = 10000100,110011 (approssimato) Calcolare codifica in virgola mobile Standard IEEE 754-1985 a precisione singola dello stesso numero. -123,21. Lo standard in questione si estende su 32 bit di cui il primo indica il SEGNO del numero. Non ha quindi senso, per questa codifica, lavorare in C2, visto che essa serve apposta per rappresentare numeri negativi... La rappresentazione in virgola mobile si basta sulla notazione scientifica: (-2)^(S) * M * 2 ^ E Dove: S = bit di segno (1 bit) M = mantissa, scritta nella forma (binaria) 1,xxxxxxx (23 bit) E = esponente (8 bit) (TOTALE: 32 bit) Pertanto nel nostro caso S = 1, perchè -123,21 è NEGATIVO. Sistemato il segno, da qui in avanti lavoriamo quindi con 123.21. Ancora, come per la codifica precedente, codifichiamo parte intera e decimale SEPARATAMENTE: Notate che in virgola mobile non abbiamo vincoli di bit per la rapprsentazione di parte intera e decimale... cioè, abbiamo dei limiti solo alla fine (perché abbiamo 32 bit), ma non dobbiamo porci limiti DURANTE i calcoli. Per esempio, per rappresentare 123, quanti bit bastano? 7! Quindi 123 lo scivo su 7 bit. 123 --> 1111011 (Se avessi dovuto rappresentare 987 mi sarebbero serviti 10 bit, quindi avrei scritto 987 su 10 bit... in questo senso non c'è un vincolo al momento dei calcoli!) Ecco invece le operazioni per codificare 0.210000: 1) 0.210000 x 2 = 0.420000 --> 0 2) 0.420000 x 2 = 0.840000 --> 0 3) 0.840000 x 2 = 1.680000 --> 1 4) 0.680000 x 2 = 1.360000 --> 1 5) 0.360000 x 2 = 0.720000 --> 0 6) 0.720000 x 2 = 1.440000 --> 1 7) 0.440000 x 2 = 0.880000 --> 0 8) 0.880000 x 2 = 1.760000 --> 1 9) 0.760000 x 2 = 1.520000 --> 1 10) 0.520000 x 2 = 1.040000 --> 1 11) 0.040000 x 2 = 0.080000 --> 0 12) 0.080000 x 2 = 0.160000 --> 0 13) 0.160000 x 2 = 0.320000 --> 0 14) 0.320000 x 2 = 0.640000 --> 0 15) 0.640000 x 2 = 1.280000 --> 1-3-

16) 0.280000 x 2 = 0.560000 --> 0 17) 0.560000 x 2 = 1.120000 --> 1 18) 0.120000 x 2 = 0.240000 --> 0 19) 0.240000 x 2 = 0.480000 --> 0 20) 0.480000 x 2 = 0.960000 --> 0 21) 0.960000 x 2 = 1.920000 --> 1 22) 0.920000 x 2 = 1.840000 --> 1 23) 0.840000 x 2 = 1.680000 --> 1 24) 0.680000 x 2 = 1.360000 --> 1 25) 0.360000 x 2 = 0.720000 --> 0 26) 0.720000 x 2 = 1.440000 --> 1 27) 0.440000 x 2 = 0.880000 --> 0 28) 0.880000 x 2 = 1.760000 --> 1 29) 0.760000 x 2 = 1.520000 --> 1 30) 0.520000 x 2 = 1.040000 --> 1 31) 0.040000 x 2 = 0.080000 --> 0 32) 0.080000 x 2 = 0.160000 --> 0 33) 0.160000 x 2 = 0.320000 --> 0 34) 0.320000 x 2 = 0.640000 --> 0 35) 0.640000 x 2 = 1.280000 --> 1...e si potrebbe andare avanti...visto che il risultato della moltiplicazione non ha ancora fatto 1! OK, quindi 0.21 ==> 001101011100001010001111010111000... (anche qui non mi pongo limiti per ora...) Uniamo le due parti trovate: 1111011, 001101011100001010001111010111000 e otteniamo M, che però non è ancora scritto correttamente... Al fine di arrivare a scrivere il numero nella forma desiderata (M * 2 ^ E), spostiamo la virgola verso dx o verso sx al fine di avere M scritto nella forma corretta cioé 1,xxxxxx. In questo caso spostiamo di 6 a sx, e moltiplichiamo quindi per 2 ^ 6. REGOLA (come in decimale eh...) sposto verso sx --> esponente positivo. Sposto verso dx, esponente negativo. In un colpo solo abbiamo quindi M (scritta correttamente) ed E (che è però ancora in decimale)!! (NB: se non sono necessari spostamenti, ovviamente E = 0) Abbiamo quindi: 1,111011001101011100001010001111010111000 * 2 ^ 6 Codifichiamo E. E va codificata su 8 bit in binario naturale. ATTENZIONE! Al fine di poter ottenere anche esponenti negativi (per numeri 0 < x < 1) non si codifica l'esponente trovato, bensì l'esponente trovato + 127. (Il K nelle slide della lezione) Nel nostro caso l'esponente è 6, quindi codifichiamo: E = 6 + 127 = 133 = 10000101 per cui M = 1,111011001101011100001010001111010111000 E = 10000101 Abbiamo tutto: --- S E M --- 1 10000101 11101100110101110000101 --- -4-

ULTIMA NOTA: Per la mantissa non ho preso l'1 prima della virgola, perché lo standard PREVEDE che la mantissa sia scritta come 1,xxx quindi perché scrivere 1,? Infatti lo si omette e si guadagna un bit di precisione. ;-) (E' un po' come lo 0 prima dei prefissi dei cellulari. Un bel giorno han detto: ma che diamine, tutti i prefissi iniziano con 0, quindi... perché far comporre lo 0 all'utente? E infatti ora lo zero non c'è più...) Sempre sulla mantissa ho preso solo le prime 23 cifre dopo la virgola tra quelle che ho trovato coi calcoli (che erano molte di più). Spero che si capisca ora meglio anche PERCHE durante i calcoli non POSSO pormi vincoli sui numeri di bit da usare. I 23 bit di mantissa si ottengono DOPO aver spostato la virgola, per cui non posso sapere prima di quanto si sposterà... Spero che sia chiaro... Buon lavoro! -5-