SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... ·...

42
numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI 2 indice sistemi posizionali rappresentazione di numeri sistema unario storia dei sistemi di numerazione il sistema latino codici posizionali in varie basi un quiz somme numeri in base 2, 3, .. prodotto in binario base sedici (esadecimale) cambio base esercizi frazioni 0,1 da base 10 a base due limiti e overflow 3 indice capitolo numeri con segno: NUMERI CON SEGNO numeri con segno numeri in complemento a uno somme con segno complemento a due rappresentazione in eccesso di k esercizi sui numeri con segno 4 indice capitolo numeri in virgola mobile : NUMERI IN VIRGOLA MOBILE rappresentazione di n.i grandi/piccoli precisione limiti esercizio somma in floating point overflow standard IEEE 754 floating point esercizi fine parte numeri 5 rappresentazione di numeri codifica dei numeri 6 rappresentazione di numeri i primi codici numerici codificavano un numero = il dato numerico in "unario": per rappresentare n si usa un simbolo ripetuto n volte (unario: c’e’ un solo simbolo, l’uno) uno I sei III III due I I sette IIII III tre I I I otto IIII IIII quattro I I I I nove III III III cinque I I I I I dieci III II III II e poi? venti ||||| ||||| ||||| ||||| trenta ||||| ||||| ||||| ||||| ||||| ||||| ma... per “scrivere” cento oppure mille ... e’ un’impresa !!

Transcript of SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... ·...

Page 1: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

1

SISTEMI DIRAPPRESENTAZIONE DI NUMERI

2indice sistemi posizionali

rappresentazione di numeri sistema unario storia dei sistemi di numerazione il sistema latino codici posizionali in varie basi un quiz somme numeri in base 2, 3, .. prodotto in binario base sedici (esadecimale) cambio base esercizi frazioni 0,1 da base 10 a base due limiti e overflow

3indice capitolo numeri con segno: NUMERI CON SEGNO

numeri con segno numeri in complemento a uno somme con segno complemento a due rappresentazione in eccesso di k esercizi sui numeri con segno

4indice capitolo numeri in virgola mobile :

NUMERI IN VIRGOLA MOBILE

rappresentazione di n.i grandi/piccoli precisione limiti esercizio somma in floating point overflow standard IEEE 754 floating point esercizi fine parte numeri

5rappresentazione di numeri

codifica dei numeri

6rappresentazione di numerii primi codici numerici codificavano un numero = il datonumerico in "unario": per rappresentare n si usa unsimbolo ripetuto n volte (unario: c’e’ un solo simbolo, l’uno)uno I sei III IIIdue I I sette IIII IIItre I I I otto IIII IIIIquattro I I I I nove III III IIIcinque I I I I Idieci III II III II e poi?venti ||||| ||||| ||||| |||||trenta ||||| ||||| ||||| ||||| ||||| ||||| ma...per “scrivere” cento oppure mille ... e’ un’impresa !!

Page 2: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

7rappresentazione di numeriunario: per codificare n uso un solo simbolo ripetuto n volte:uno I sei III III... ...quattro I I I I nove III III IIIcinque I I I I I …la rappresentazione unaria va bene per numeri piccoli,oppure per situazioni teoriche (casi particolari di alcunemacchine di Turing … lo vedremo in seguito)

non va bene per la scrittura abitualenon va bene per il calcolatore...e l'umanita' se ne e' accorta abbastanza presto !

8rappresentazione di numeriper semplificare la rappresentazione di numericirca 5000 anni fa in Egitto, Mesopotamia, poi India,Cina, piu’ tardi in America (centro e sud),

per evitare la ripetizione eccessiva nel caso di numerimaggiori di 10 si introdusse una codifica piu' economica: si usarono dei simboli diversi per indicare un gruppo di 10, 20, 30, 100, 500, 1000 simboli ecc

Il sistema inizialmente non prevedeva un simbolo perindicare il numero zero, ne' per indicare la cifra zero;per un sistema posizionale la cifra zero e' importante(indica la mancanza di numeri di quel peso) e fu introdottoabbastanza presto nel sistema babilonese (600 anni p.c.), poireinventato in india, e poi ritornato nei paesi arabi e inEuropa.

9rappresentazione dei numeri : i sumeri e i babilonesisono considerati i piu' antichi i sistemi sumero-babilonesi e egiziani -anche perche' poco e'rimasto delle prime civilta' indu' preindoeuropee

wedge=cuneo

10numeri egiziani

11numeri egizi

girino

osso del tacco

bastone

rotolo di corda

12numeri egiziun esempio di scrittura di un numero grande:46206 = 4 x 10.000 (dito indice ripetuto 4 volte) + 6 x 1000 (6 fiori di loto) + 2 x 100 ( 2 rotoli di corda) + 6 unita' (6 barre)(nessuna decina)(scritto da destra verso sinistra, ma si legge anche se cambia l'ordine di scrittura: quello che conta e' il simbolo,non la posiz)

Page 3: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

13codifica numerinell'antichita' i numeri erano usati per memorizzarequantita' di oggetti e date di trattati o donazioni e eventimemorabili,e - dove richiesto - posizioni e date di eventi astronomici (auso di predizione per agricoltura o per uso del re...)molti popoli hanno sviluppato piu' o meno autonomamentevari sistemi di numerazione, di cui ci interessano alcuni: * babilonesi (base sessanta, posizioni in gradi sessagesimalidelle stelle e misura del tempo in ore, minuti e secondi) * egiziani (da cui poi i greci e poi i..) ==>> romani ... di seguito cenni dei sistemi di numerazione * greci e romani * maya (i primi a inventare lo zero, senza effetti successivi sul resto del mondo) * indu' (brahmi->devanagari->arabi occidentali->europa

14numerazione greca

gli antichi Greci erano bravissimi in geometria,ma usavano un sistema di scrivere numeri non posizionale;Euclide, Archimede, Tolomeo ecc scrivevano i numeri con ilsistema greco (da cui il sistema romano);i numeri "importanti" erano indicati con le lettere inizialidella parola usata per indicare tale numero(penta,deka,hekta, ... vedi pagina seguente

i matematici greci non usarono il sistema posizionale:un sistema di numerazione efficiente non era importante pergli studi di geometria;gli astronomi greci adottarono dai babilonesi l'uso dello zero(lo zero nel sistema posizionale Babilonese, usato comemarcatore di posizione zero, esso era noto a Ptolomeo, manon era considerato un numero, e fu dimenticato)

15numerazione greca 16numerazione grecain seguito, per economia di scrittura, furono adottati inGrecia dei simboli singoli

per indicare i numeri "piu' usati", da 1 a 1000;

i simboli usati erano semplicemente quelli dell'alfabeto;

per i numeri dopo il 1000 si usava una codifica per il pesomille e una codifica diversa per il peso 10.000 -

ma il sistema non era posizionale,e cosi' rimase per i latini

17numerazione greca 18numerazione grecaper scrivere numeri molto grandi i greci usavano un sistemamisto del simbolico non posizionale puro e con due pesi(mille e diecimila)...

Page 4: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

19rappresentazione di numeriDai sistemi di numerazione babilonesi ... greci deriva ilsistema di numerazione romano. Il sistema latino e' uncodice non posizionale (ibrido): il valore numerico associatoad un simbolo dipende in minima parte dalla sua posizioneed e' in gran parte fisso: (nota semplificazione 4: da IIII a IV)

1 I 6 VI 11 XI2 II 7 VII 12 XII3 III 8 VIII 13 XIII4 IV 9 IX 14 XIV5 V 10 X 15 XV

20 XX30 XXX40 XL50 L e, ancora, ->

20rappresentazione di numerisistema romano:1 I 4 IV 5 V 10 X20 XX 60 LX30 XXX 70 LXX40 XL 80 LXXX50 L 90 XC

100 C 600 DC200 CC 700 DCC300 CCC 800 DCCC400 CD 900 CM500 D 1000 M....

21numeri - il sistema romano

le operazioni aritmetiche con il sistema di numerazioneromano o latino sono "piuttosto scomode" …

Si provi ad es. verificare che

MCMXCVI piu’ IV = MM (*)

oppure :

X L V I I I volte X I X = CMXII (+)________(*) 1000+900+90+6 piu' 4 = 1996 piu' 4=2000(+) 48 * 19 = 912

22rappresentazione di numeriper semplificare le operazioni di addizione(e le altre operazioni aritmetiche)

si ricorreva al pallottoliere (abaco)

il pallottoliere e' rimasto in uso in molti paesi fino apochi decenni fa (Russia, Cina, Giappone)dove il suo uso era insegnato a scuola(talvolta lo e' ancora)

il sistema romano era una via poco praticabile e fuabbandonato anche se solo dopo piu' di mille anni ...tracce di uso rimangono in varie situazioni e in vari paesi ...

23numeri indiani

Il sistema posizionale decimale fu inventato in India:

duemila anni prima il sistema di numerazione posizionale fuinventato dai sumeri e babilonesi, ma con base 60;

gli indu' ripresero il sistema posizionale, con base 10

(non noto se lo ripresero dai babilonesi attraverso le primeculture proto-indu' di Harappa e Mohendjo Daro, (culturedistrutte dagli indo-europei) o se lo reinventarono)

Laplace scrive:

24Laplace sul sistema indo-araboLaplace:il sistema ingegnoso di esprimere ogni numeropossibile con l'uso di soli dieci simboli (assegnandoad ogni simbolo un valore di posizione e un valoreassoluto) nasce in India.Oggi l' idea sembra tanto semplice che il suosignificato e la sua profonda importanza non sono piu'apprezzati. Il sistema ha portato ad una talesemplificazione dei calcoli da portare l'aritmetica tra leinvenzioni piu' utili per l'umanita'.Si comprende l'importanza di questa invenzione se siconsidera che essa non fu alla portata dei matematicimaggiori dell'antichita' come Euclide, Archimede oApollonio...(a difesa di quelli si ricorda che gli interessi dei matematici dell'antichita' era volto verso la geometria, meno verso i calcoli numerici)

Page 5: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

25

Numeri Brahmi nota l'evoluzione del 2 da || e del 3 da |||

numeri indiani 26numeri indiani

Sulle origini dei numeri Brahmi (da cui derivano i numeriDevanagari, i numeri arabi (piu'varianti) e infine i numericome oggi li usiamo) si sa poco;

poco si sa anche sulle cause che portarono all'invenzione del sistemaposizionale;gli studi numerologici in India furono motivati dall'astrologia e dalfascino per i numeri grandi tipico della cultura dell'India

( racconto del 2 secolo d.c. sul dialogo tra Boddishatva e il suo maestrodi matematica su come si ottengono dei numeri molto grandi;Boddishatva arriva ad un dato dell' ordine di grandezza di 10^450 ! )

27numeri indo-arabi 28numeri cinesi

29numeri giapponesi 30numeri ...si potrebbe continuarel'elenco di sistemi di numerazione,

menzioniamo solo un esempio ancora,

che e' circa contemporaneo ai numeri Brahmi,

ma di tutt'altra regione ...

Page 6: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

31Numerazione Mayale culture del continente africano erano a contatto con l'areamediterranea e dell'india;le culture del continente australiano (condizioni climatichediverse) non hanno dato luogo a organizzazioni statalicomplesse che richiedessero archivi e corrispondenza...le culture del continente americano hanno avuto unosviluppo separato nell'arco di 10.000 anni (seconda ondatadi popolazione del continente, attraverso la Siberia el'Alasca), e sono arrivate alla scrittura e ai sistemi dinumerazione con uno sviluppo autonomo; la maggior partedel sapere delle culture del continente americano e' statadistrutta dai colonizzatori spagnoli.segue un cenno al sistema di numerazione Maya, sviluppatomolti secoli prima dell'arrivo degli spagnoli.

32Numerazione Maya

33Numerazione Mayaproviamo scrivere 508:ricorda che la base e' 20,quindi 508 va pensato eriscritto come:8 unita' (=8 decimale)5 ventine (=100 decimale)1 ventina al quadrato (=20*20 = 400 decimale)quindi50810 = 158 20 che in Mayascriviamo . ...

34numeri mayaqualche esempio di numeri maya:

35sullo zeroL'introduzione del sistema posizionale porto' alla scopertadello zero;

si noti che i sistemi "additivi" come l'antico egiziano o ilsistema romano non richiedono l'uso dello zero:2040 si scrive MMXL, 24 si scrive XXIV ...

in un sistema posizionale lo zero e' importante: devo distinguere tra 24, 204, 240, 2004, 2040, 2400, 20004, 200400, 24000 ...quindi come codice di "posizione vuota" lo zero appareassieme al sistema posizionale,

mentre il NUMERO ZERO appare secoli dopo,con la generalizzazione delle regole di aritmetica di somma,prodotto, moltiplicazione e divisione ...

36storia numeri indu'200 d.c.: cifre Brahmi,500: sistema posizionale e introduzione della cifra zero (non come numero, ma come marcatore di posizione vuota),630: zero come numero: il matematico Brahmagupta si occupadell'uso dello zero nelle operazioni aritmetiche: Br. scrive [[se z sta per zero, n per negativo, p per positivo, nnper numero negativo, np per numero positivo]] :addizione: la somma di z e di un nn e' n, la somma di un np conz e' p, la somma di z con z e' z;sottrazione: un nn (o np) sotratto dallo z e' p (o n), z sotratto daun np (o nn) e' p (o n), z sotratto da z e' z;moltiplicazione: ... np moltiplicato per z e' z, ...,divisione: z diviso un np o un nn e' zero, z diviso z e' z, (!!)np o nn diviso zero e' una frazione con zero come denominatore(tautologia !!) -> non riesce a risolvere il x/0 ...1130 Bhaskara: un np diviso per z e' una frazione chiamatafrazione infinita, che e' tale che f.i.+n e' f.i., e f.i.-n e' f.i. ...

Page 7: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

37numeri cinesiil sistema di numerazione indu', posizionale decimale, con lozero, era ben sviluppato nel 800 d.c., e dall' India si diffuseall'est - in Cina:i matematici Cinesi del 1200 descrivono il sistema posizionaledecimale con l'uso della cifra e anche del numero zero;e sempre dall'India si diffuse all'ovest, nei paesi arabi, equindi in Italia: Fibonacci, "Liber abaci" dove usa anche il"segno" zero (ma non il numero zero)il numero zero entro' nell'uso comune dei matematiciEuropei appena dopo il rinascimento (1600);... Gli autori J.J. O'Connor, E.F.Robertson, dell' articolosullo zero, scrivono: ma lo zero e'ancora problematico ;-)si consideri ad esempio la data del "millenio", 1 gennaio2000, che era la fine di 1999 anni del nostro sistema dicontare gli anni, e non di 2000 anni...(vedi: http://www-history.mcs.st-andrews.ac.uk/HistTopics/Zero.html)

38numeri indo-arabo-europei:I numeri standardizzati con l'introduzione della stampa (1500-1600):

39rappresentazione di numeriCODICI NUMERICI POSIZIONALIUn numero e' codificato (rappresentato) da una sequenza disimboli, dove ogni simbolo ha un valore numerico definitodalla posizione del simbolo nella sequenza:

1984

rappresenta un valore dato dalla somma di 1 migliaia 9 centinaia 8 decine 4 unita'

1984 rappresenta 1000 * 1 + 100 * 9 + 10 * 8 + 1

40rappresentazione di numeriCODICI NUMERICI POSIZIONALI

Un numero e' codificato (rappresentato) da una sequenza disimboli, dove ogni simbolo ha un valore numerico definitodalla posizione del simbolo nella sequenza.Es: codice numerico posizionale con 4 simboli (cifre) :

a b c d (o qualunque altri 4 simboli)Ad ogni simbolo si associa un valore numerico, ad es.: a =3, b = 2, c = 1, d = 0,Una stringa di tali simboli e' un codice di un numero: ad esempio abbac:abbac rappresenta un valore numerico dato da: n = a * p1 + b * p2 + b * p3 + a * p4 + c * p5dove p1, p2, p3, p4 e p5 sono valori numerici o "pesi"associati alle posizioni nella stringa.

41rappresentazione di numeri - un codice ... strano :cont. es 4 simboli, a b c d a cui associamo i valori numerici a =3, b = 2, c = 1, d = 0,una stringa di tali simboli: abbac rappresenta unvalore numerico ottenuto dai simboli (cifre) moltiplicandoogni cifra per un peso diverso (i pesi sono convenzionali) epoi sommando: n = r * p1 + t * p2 + r * p3 + r * p4 + s * p5es. con i pesi (NON usuali! - anzi, decisamente strani...) p1 = 222, p2 = 55, p3 = 17, p4 = 6, p5 = 1

il codice abbdc ovvero 32201 con tale sistema vale 3*222 + 2*55 + 2*17 + 0*6 + 1*1 = 666+110+34+0+1 = 811 (sistemi simili sonostati usati per le monete di antichi paesi)

42rappresentazione di numeri esempio: rappresentazione di numeri con 4 cifre

a,b,c,d (leggi: zero, uno, due, tre) ca rappresenta il valore c * peso1 + a * peso0 bacabb rappresenta un valore numerico ottenuto daisimboli (cifre) moltiplicando ogni cifra per un peso diverso epoi sommando:

scelta abituale: i pesi associati alle posizioni sono convenzionali ma NON sono arbitrari:sono le potenze di una costante detta base del sistema,in un sistema a 4 cifre, base 4, si assume convenzionalmente peso0 = uno, peso1 = quattro ca = c * peso1 + a * peso0 quindi ca = c * quattro + a * uno

Page 8: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

43rappresentazione di numerinel sistema in base 4 o "quaternario" abbiamo 4 cifre:a,b,c,d (leggi : zero, uno, due, tre),la codifica abbac rappresenta un valore numericoottenuto dai simboli (cifre) moltiplicando ogni cifra per unpeso diverso (i pesi sono convenzionali) e poi sommando: n = a * p1 + b * p2 + b * p3 + a * p4 + c * p5per il nostro sistema, una scelta e':p5 (ultimo peso a destra)vale 1 (unita') cioe' 4 alla 0p4 (penultimo peso a destra) vale 10 (quartine) = 4 alla 1p3 vale 100 (sedicine) = 4 alla due, ecc ba (vale b*p4+a*p5 = una quartina,zero unita') bd (vale b*p4+d*p5 = una quartina,tre unita') bac (vale b*p3 + a*p4 + c*p5= una sedicina + zero quartine + due unita')

44rappresentazione di numerisistema "quaternario", base 4, con 4 cifre: a(zero), b(uno), c(due), d(tre)scelta abituale: i pesi associati alle posizioni sono lepotenze di una costante detta base del sistema,per il nostro sistema, con n= a*p1+b*p2+b*p3+a*p4+c*p5una scelta potrebbe essere p5 vale 1 (unita'); p4 vale 10(quartine), p3 vale 100(sedicine) ecc;0) a 1) b 2) c 3) d i primi 20 numeri4) ba 5) bb 6) bc 7) bd si scrivono8) ca 9) cb 10) cc 11) cd cosi' (es. cinque cioe'12) da 13) db 14) dc 15) dd un 4 piu' un 1 si scrive16)baa 17)bab 18)bac 19)bad bb , 12 cioe' tre 4 piu'20)bba 21)bbb 22)bbc 23)bbd zero 1 si scrive ca, ecc) ancora: bbd =b*sedicine+b*quartine+d*unita' = scritto in decimale: 16+4+3 = 23

45rappresentazione di numeririscriviamo il sistema quaternario, base 4, con 4 cifre:al posto di a, b, c, d scrivo 0 1 2 3per il nostro sistema, una scelta dei pesi (abituale): p5 vale 1 (unita'); p4 vale 4 (quartine), p3 vale 16(sedicine)diremo il sistema posizionale con base 4,e per contare in base 4 avremo: 0) 0 1) 1 2) 2 3) 3 i primi 20 numeri 4) 10 5) 11 6) 12 7) 13 si scrivono 8) 20 9) 21 10) 22 11) 23 cosi' ...12) 30 13) 31 14) 32 15) 3316)100 17)101 18)102 19)10320)110 21)111 22)112 23)113ad es : 113 =1*sedicine+1*quartine+3*unita' =riscritto in base dieci abituale: 113 = 16+4+3 = 23

46rappresentazione di numeriil nostro sistema numerico e' posizionale con base dieci: 1 1 8 7 rappresenta 1*10^3 +9*10^2 +8*10^1 +7*10^0 = 1*1000 +1*100 +8*10 +7* per un codice numerico posizionale in base b uso un insieme di b cifre (simboli): { s1,s2,s3,... sb }Un dato di n+1 cifre c(n) c(n-1) c(n-2) c(n-3)...c(1) c(0)rappresenta il numero (indico con b^k = b elevato alla k)c(n)*b^n + c(n-1)*b^(n-1) + ... + c(1)*b^1 + c(0)*b^0cioe’ (in base b): c n * 10..00 + .. + c 2 * 100 + c 1 * 10 + c 0 * 1

47rappresentazione di numerisi noti che nel sistema numerico posizionale con base dieci: 1 1 8 7 rappresenta 1*10^3 +9*10^2 +8*10^1 +7*10^0 =

1*1000 +1*100 +8*10 +7* 1

questo si puo' scrivere anche cosi'(con basi a fattore comune) :

( ( ( ( ( 1*10 ) + 1 ) * 10 + 8 ) * 10 ) + 7 )

48rappresentazione di numeririprendiamo il sistema con 4 simboli (cifre), base = 4,e i pesi saranno le potenze di 4:

p4..p0= 256 64 16 4 1

e quindi d b d d ccon(d =3, c = 2, b = 1, a = 0) rappresenta:

3*p4 + 1*p3 + 3*p2 + 3*p1 + 2*p0 =3 * 10000 + 1 * 1000 + 3 * 100 + 3 * 10 + 2 * 1 (in base 4) =3*4^4 + 1*4^3 + 3*4^2 + 3*4^1 + 2*4^0 = (base 10)3*256 + 1*64 +3*16 + 3*4 + 2*1 =

768 + 64 + 48 + 12 + 2 = 832 + 62 = 894 in base 10

Page 9: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

49rappresentazione di numeriI primi venti numeri sono rappresentati in base 4 comesegue (riportati numero in decimale e in base quattro):

0 01 1 11 232 2 12 30 <-3 3 13 314 10 <- 14 325 11 15 336 12 16 100 <- (non 40! ;-)7 13 17 1018 20 <- 18 1029 21 19 10310 22 20 110 <-

50rappresentazione di numeries: base 4: 1323rappresenta (e' la codifica di) : 1 * base^3 + 3 * base^2 + 2 * base ^1 + 3 * base^0 1 * 4*4*4 + 3 * 4*4 + 2 * 4 + 3 * 1

ovvero: 1*64 + 3 * 16 + 2 * 4 + 3…. e 1987 cosa rappresenta in base 4 ? <<== ;-)

51rappresentazione di numeri... in base quattro il numero 1987 ...

... non rappresenta nullaperche' 9,8,7 non sono cifre in base quattro -in base b le cifre vanno da 0 a b-1 !!

in ogni caso la base si scrive 10 e rappresenta il numero b (tranne in unario)

Es. in ottale ovvero con base otto le cifre sono:

0 1 2 3 4 5 6 7

e la base otto si scrive 10 !!

52rappresentazione di numeriancora, in ottale (base otto) il valore numerico della base e' otto, dove otto in base 8 si scrive 10

in genere in ogni sistema posizionale con base b,la base b si scrive 10

otto in base 8 si scrive 10, e si indica con: 108

dato che si indica otto in base 10 con 810

quindi 108 = 810

come 103 = 310 , e 106 = 610 e 107 = 710 e 1016 = 1610

53rappresentazione di numeriin ottale (base otto) si conta:

0 1 2 3 4 5 6 7 a cui segue ->

10(*) 11 12 13 14 15 16 17 (*) 108 = 810

20 21 22 23 24 25 26 27

30 ... ...... ... 65 66 67

70 71 72 73 74 75 76 77 -> 7*8+7 =63

100 101 102 107

110 111 112 117 -> 64+8+7 =79....

54rappresentazione di numeriad es. in base 12 ho dodici cifre,0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B

dieci e undici in base 12 sono cifre, indicate con A e B !

quindi i primi 36 numeri - conto da 0 a 35 (35 in base 10):

0 1 2 3 4 5 6 7 8 9 A B ( B vale 11)10 11 12 13 36 ... 19 1A 1B (1B vale 23)20 21 22 23 35 ... 29 2A 2B (2A vale 34)30 31 32 33 34 ... 39 3A 3B (39 vale 45)40 41 42 43 44 ... 49 4A 4B50 ... (4B vale 4*12+B=48+11)60 ...

Page 10: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

55rappresentazione di numeriad es. in base 16 ho sedici cifre,0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

dieci, undici,.. quindici in base 16 sono cifre,indicate con A,B,.. F

quindi i primi 20 numeri - conto da 0 a 20 (20 in base 10):

0 1 2 3 4 5 6 7 (da 0 a 7 come in decimale) 8 9 A B C D E F (B vale 11, F vale 15) 10 11 12 13 14 15 16 17 (10 vale 16 in base 10) 18 19 1A 1B 1C 1D 1E 1F (1E vale 30 in base 10)

56rappresentazione di numeri

CONVERSIONE

da base b generica a base 10,

e da base 10 a base generica

57rappresentazione di numeriCONVERSIONE da base b generica a base 10, esempio:da base 8 a base 10, per definizione: 17 = 1*8+7 =15, 20 = 2*8 = 16, 76 = 7*8+6 = 62, 100 = 1*64 = 64 ecc

Per decodificare in base 10 un numero rappresentatoin base 8 basta ricordare la definizione:ad es. 5 1 5 ( in base 8) vale in base 10:5*100 + 1*10 + 5*1 (in base 8) 5 * 64 + 1 * 8 + 5*1 (in base 10) = 320 + 8 + 5 = 333 (in base 10)

58rappresentazione di numeriancora un es:

il numero 3 7 1 3 in base 8 diventa in base 10:

3 * 1000 + 7 * 100 + 1 * 10 + 3 * 1 tutto in base 8, che in base 10 diventa: = 3*512 + 7 * 64 + 1 * 8 + 3 * 1 = 1536 + 448 + 8 + 3 = 1995 10

59rappresentazione di numeriun es. in base 3 ... (cifre 0,1,2 ):come si conta in base tre ? 0 1 2 e poi?

10 11 12 che sono tre, quattro e cinque, cioe' una terna piu' zero, uno e due, poi

20 21 22 che sta per sei, sette e otto, ovvero due terne piu' zero, uno e due, cui segue nove ovvero tre terne 100 cioe' una (terna)2 piu'zero terne piu' zero unita'

60rappresentazione di numeriin base tre ... (cifre 0,1,2 ):contare in base tre: 0 1 2 10 11 12 20 21 22 100 101 102 110 111 112 120 121 122 200 201 202 210 211 212 220 221 2221000 …che corrispondono ai numeri in base 10: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 …

Page 11: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

61rappresentazione di numeri

esercizio:

quanto vale 1 2 2 1 0 1 (dato in base 3) = in base dieci ?

1 2 2 1 0 1 = in base tre il significato e' noto:

1 * 100000 + 2* 10000 + 2 * 1000 + 1 * 100 + 0 * 10 + 1 * 1tutto in base tre ...vediamo di riscrivere in base dieci

ricorda come si conta in base tre: 0 1 2 10 11 12 20 21 22 100 ovvero, 0 1 2 3 4 5 6 7 8 9 in base 10,

62rappresentazione di numeriesercizio: quanto vale 1 2 2 1 0 1 (dato in base 3) = in base dieci ?

in base tre il significato e' noto:1 2 2 1 0 1 =

1 * 100000 + 2* 10000 + 2 * 1000 + 1 * 100 + 0 * 10 + 1 * 1 che diventa in base dieci:

1*35 +2*34 +2*33 +1*32 +0*31 +1*30 =

1 * 243 + 2 * 81 + 2 * 27 + 1 * 9 + 0 * 3 + 1* 1 = 243 + 162 + 54 + 9 + 1 = 469 10 = 122101 3

63

e finalmente arriviamoal sistema usato dai calcolatori:

numeri in base 2

due cifre sole, 0 e 1

64rappresentazione di numeriIn base due abbiamo due cifre 0 1(cifre binarie,BInary digiT = BIT)per rappresentare i due numeri zero e uno, e 10 perrappresentare il numero due; i primi 20 numeri in binario:

1 1 11 101122 102 12 110023 112 13 11014 100 14 11105 101 15 11116 110 16 100007 111 17 100018 1000 18 100109 1001 19 1001110 10102 20 101002

nota: 101 = 4 +1=5; 110 = 4+2=6; 1101 = 8+4+1=13 ecc

65rappresentazione di numeri ricorda alcune potenze di due in binario:2 = 2 alla 1; 4= 2 alla 2; 8 = due alla 3;16 = 2 alla 4; 32 = 2 alla 5; 64 = 2 alla 6;128 = due alla 7; 256 = 2 alla 8; 512 = 2 alla 9;1024 = 2 alla 10; 2048=2 alla 11; 4096=2 alla 12;32768 = 2 alla 15; 65536 = 2 alla 16; ...1024 = 2 alla 10 ... = 1 Kilo1 048 576 = 2 alla 20 = 1 Mega1 073 741 824 = 2 alla 30 = 1 Giga ... e un Tera ?in base due scrivo le potenze di due come:2 ->102 4->100 2 8->1000 2 16->10000 232->10 00002 64->100 0000 2 128->1000 0000 2256->1 0000 0000 2 ecc

66rappresentazione di numeri

es. il numero

1011012

rappresenta (tutto in binario):1*1000002 + 0*100002 + 1*10002 + 1*1002 + 0 *102 + 12ovvero (in decimale):1* 3210 + 0*1610 + 1* 810 + 1 * 410 + 0 * 210 + 1

= 4510

Page 12: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

67rappresentazione di numericonversione da base 2 a base 10 -basta ricordare le potenzedi due ed il significato del codice,

4096 2048 1024 512 256 128 64 32 16 82^12 2^11 2^10 2^9 2^8 2^7 2^6 2^5 2^4 2^3

4 2 1 ad es 10000 2 = 2 alla 4 = 162^2 2^1 2^0

per cui 10100 = 1*2^4 +0*2^3 +1*2^2 +0*2^1 +0*2^0rappresenta 1*16 +0*8 +1*4 +0*2 +0*1 = 20

68rappresentazione di numericonversione da base 2 a base 10 -basta ricordare le potenzedi due ed il significato del codice,

4096 2048 1024 512 256 128 64 32 16 82^12 2^11 2^10 2^9 2^8 2^7 2^6 2^5 2^4 2^3

4 2 12^2 2^1 2^0

esercizio ... convertire in base dieci il numero dato in basedue (qui inseriti tre spazi per migliore lettura): 101 0110 0110 01012

69rappresentazione di numerisoluzione esercizio " convertire in base dieci il numero datoin base due " 101 0110 0110 0101 onm lkji hgfe dcbaricordando i pesi che sono: 1 per l’ultima cifra a destra, a,poi due per la penultima cifra b, poi 4 per c, poi 8 per d, ecc,e 1024 per la decima cifra k, 2048 per l, 4096 per m(12acifra) 8192 (13.a cifra n), 16384 per la 14.a cifra o,quindi (tolte le cifre zero, restano le cifre uno),in notazione mista:

o + m + k + j + g + f + c + a 16384 +4096 +1024 +512 + 64 + 32 + 4 + 1

= 22117

70rappresentazione di numerisoluzione esercizio " convertire in base dieci il numero datoin base due " 101 0110 0110 0101un po' piu' veloce se raggruppo a 4 a 4 i bit, e ricordando ipesi di questi gruppi, che sono le potenze di 16(un gruppo di 4 cifre binarie permette di contare da 0 a 15),1 per l’ultimo a destra, 16 per il penultimo a destra, 256 peril terzultimo a destra (il secondo) e infine 4096 per il primoquindi (in notazione mista): 101*4096 + 0110*256 + 0110*16 + 0101*1ricordando la tabellina dei primi 16 numeri in binario, 101 = 5, 0110 = 6, 0101 = 5, quindi:5*4096 + 6*256 + 6*16 + 5 = 20480 + 1536 + 96 + 5 = 22117

71esercizio (quiz)

quale numero segue nella sequenza, e perche' ?(ovvero: come e’ costruita questa sequenza?)

10 11 12 13 14 20 22 101 ?

72quiz

un aiuto ...

dieci in base dieci si scrive dieci piu' zero, cioe' 10,dieci in base nove si scrive nove piu' 1, cioe' 11dieci in base otto come si scrive?

Page 13: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

73rappresentazione di numeri - tabella di corrispondenzanum\ base 2 3 4 5 6 7----------------------------------------------------------------------------------------uno 1 1 1 1 1 1due 10 2 2 2 2 2tre 11 10 3 3 3 3quattro 100 11 10 4 4 4cinque 101 12 11 10 5 5sei 110 20 12 11 10 6sette 111 21 13 12 11 10otto 1000 22 20 13 12 11nove 1001 23 21 14 13 12dieci 1010 101 22 20 14 13

nota: in base 4quattro scrivo10, cinque scrivo11ecc

nota la diagonalein tabella in cor-rispondenzadella riga =colonna = base,e le diagonaliimmediatam.sopra e sotto...

74rappresentazione di numeriaritmetica elementare, date tabelle di addizione base 2 e 3 : 0 1 0 1 2 ---- ----------0 0 1 0 0 1 21 1 10 1 1 2 10 2 2 10 110+1=1 1+1=10 (binario) 1+1=2 2+1=10 (ternario)da cui le somme in base 2,3,10 (stessi dati in basi diverse): 1 1 0 1 1 1 1 1 3 + 1 0 + 2 + 2 ------- ----- ----- 1 1 1 1 1 2 0 1 5 2 3 10

75rappresentazione di numeri ... ancora somme:nove piu' cinque (decimale) in base 2 e 3:

1 0 0 1 1 0 0 9 1 0 1 1 2 5------- ----- --1 1 1 0 1 1 2 14 2 3 10

----------------------------------------------------------------------------------------------------

undici e cinque (decimale) in base 2 e 3: 1 0 1 1 1 0 2 11 1 0 1 1 2 5 ------- ----- --1 0 0 0 0 1 2 1 16 2 3 10-

76rappresentazione di numeri ... ancora somme:

quindici piu' uno (decimale) in binario e ternario :

1 1 1 1 1 2 0 15 1 1 1 -------- ----- --1 0 0 0 0 1 2 1 16 2 3 10

77rappresentazione di numeriaddizione in base otto-----------------------------------------------------

0 0 1 2 3 4 5 6 7 da cui ad1 1 2 3 4 5 6 7 10 es. 7+1=102 2 3 4 5 6 7 10 113 3 4 5 6 7 10 11 124 4 5 6 7 10 11 12 135 5 6 7 10 11 12 13 146 6 7 10 11 12 13 14 157 7 10 11 12 13 14 15 16

1 5 13 1 3 11 ottale /+ 2 + 2 5 5 decimale --- -- --- -- 1 7 15 2 0 16 8 10 8 10

78rappresentazione di numeriPRODOTTO: base 2 e 3:

0 1 0 1 2 --- -----------0 0 0 0 0 0 01 0 1 1 0 1 2 2 0 2 11

base 2 base tre1*0=0 1*2 = 21*1=1 2*2 =11

Page 14: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

79rappresentazione di numeri

es. (12*13=156)in base due:

1 1 0 0 * 1 1 0 1 ------------------ 1 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0---------------1 0 0 1 1 1 0 0in base 10:128 +16+8+4 = 156

PRODOTTO:base 2 e 3:

0 1 0 1 2

--- ---------

0 0 0 0 0 0 0

1 0 1 1 0 1 2

2 0 2 11

80rappresentazione di numeribase 3 [ 12*16=192 ]

1 1 0 * 1 2 1---------------- 1 1 0 2 2 0 1 1 0 ----------- 2 1 0 1 0

che e'2*81+1*27+0*9+1*3+0*1 ==162+27+3 = 192

PRODOTTO: base 2 e 3:

0 1 0 1 2 --- -----------0 0 0 0 0 0 01 0 1 1 0 1 2 2 0 2 11

base 2 base tre1*0=0 1*2 = 2 1*1=1 2*2 =11

81esercizio: prodottoesercizio: calcolare 18 * 5 in base due

( 18 * 5 = 9 * 10 = 90 in base 10, in base 2: 90 = 64 + 16 + 8 + 2 = = 1*64 + 0*32 +1*16 +1*8 +0*4 +1*2 + 0*1 ovvero 1 0 1 1 0 1 0 con i pesi 64 32 16 8 4 2 1 )

se passo prima in binario, e poi faccio il prodotto in binario:

18 = 16 + 2 = (in base 2) = 10000 + 10 = 10010

5 = 4 + 1 = (in base 2) = 101

82cont.esercizio prodottocontinua esercizio: calcolare 18 * 5 in base due

18 = 16 + 2 = (in base 2) = 10000 + 10 = 100105 = 4 + 1 = (in base 2) = 101

quindi 1 0 0 1 0 x 1 0 1 ------------ 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 ---------------------- 1 0 1 1 0 1 0 = 64 + 16 + 8 + 2

83rappresentazione di numeritavola delle moltiplicazioniin base otto:

PRODOTTO: 2*4=10,3*5=17 1 2 3 4 5 6 7--------------------------0 0 0 0 0 0 0 01 1 2 3 4 5 6 72 2 4 6 10 12 14 163 3 6 11 14 17 22 254 4 10 14 20 24 30 345 5 12 17 24 31 36 436 6 14 22 30 36 44 527 7 16 25 34 43 52 61==========================

1 4 * 1 5------(base 8) 1 4 7 4 (o)------ 2 3 4(o) nb:4*58=248 ho 48,riporto 28,poi1*58=5+2(rip)=7..(in base 10: 12 * 13 = 36------- 156

84esadecimale (base 16)In base 16 si usano 16 cifre, normalmente indicate con:0 1 2 3 4 5 6 7

8 9 A B C D E F

leggi: zero, uno, .. nove, dieci, undici, dodici, ... quindici)

I primi 20 numeri in base 16 sono(base10/base16):1 2 3 4 5 6 7 8 9 10 base 101 2 3 4 5 6 7 8 9 A base 16

11 12 13 14 15 16 17 18 19 20 base 10 B C D E F 10 11 12 13 14 base 16

esercizi: 1) quanto vale C * D in base 16 ?2) costruire la tabella di moltiplicaz. per base 16.

Page 15: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

85CAMBIO DI RAPPRESENTAZIONE(rip.) per decodificare in base 10 un numero scritto in unabase generica e' sufficiente ricordare la definizione. Es:dato (in binario): 1 0 0 0 1 1 1 1 (cifre) 7 6 5 4 3 2 1 0 (rango)128 64 32 16 8 4 2 1 (peso)

= 1*2^7 + 0*2^6 + .. 1^2^3 + 1*2^2 + 1*2^1 + 1*2^0 == 1*128 + 0*64 + .. + 1*8 + 1*4 + 1*2 + 1*1 = 143

anche cosi':= ((( ((( 1*2+0)*2+0)*2+0)*2 +1)*2+1)*2+1)*2+1dove il primo 1 viene moltiplicato per 2^7, il secondo (zero)per 2^6 ecc

86CAMBIO DI RAPPRESENTAZIONE - dal BINARIO->Raggruppando le cifre binarie (bit) a tre a tre, partendo dadestra verso sinistra, si converte la rappresentazione da basedue a base otto:il dato di partenza 143 (base 10) ovvero in base due 10 00 11 11 vale (cifre bin. a tre a tre): 010 001 111 (1*2+0) * 2^6 + (0*4+0*2+1) * 2^3 + (1*4+1*2+1) * 2^0 = 2 * 64 + 1 * 8 + 7 * 1 = = 2 * 8^2 + 1 * 8^1 + 7 * 8^0 = 2 1 7

in base 8, che vale

= 2 * 64 + 1 * 8 + 7 = 128 + 8 + 7 = 143 in base dieci

87CAMBIO DI RAPPRESENTAZIONE - dal BINARIO->per passare da base due a base sedici e' sufficienteraggruppare i bit a quattro a quattro:lo stesso dato 143 che in base due si scrive: 10 00 11 11 vale 1000 1111 (1*8+0*4+0*2+0) * 2^4 + (1*8+1*4+1*2+1*0) * 2^0 = 8 * 16 + 15 * 1 = = 8 F in base sedici = 8 * 16 + 15 = 128 + 15 = 143 in base 10NOTA: l’esadecimale si usa solo come rappresentazionepiu’ concisa del binario [ raggruppiamo il binario a 4 a 4cifre partendo da destra e abbiamo l’ esadecimale ].. il binario perche’ e’ usato dal calcolatore ...

88CAMBIO DI RAPPRESENTAZIONERicordiamo ancora la tabella dicorrispondenza dei codicinumerici da 1 a 15 nelle basi(10)(16)(8)(2):

0 0 0 000 8 8 10 10001 1 1 001 9 9 11 10012 2 2 010 10 A 12 10103 3 3 011 11 B 13 10114 4 4 100 12 C 14 11005 5 5 101 13 D 15 11016 6 6 110 14 E 16 11107 7 7 111 15 F 17 1111________________________________

il numero 10(base 10) in baseotto si scrive 12, ein base 2 si scrive1010;il numero 14 inbase 8 e' 16 e inbase 2 e' 1110...

89RAPPRESENTAZIONE BIN ... ultimi 4 esempi ... - due es da base 2 a base 8 o 16:

per passare da base 2 a base 8 prendo i bit a tre a tre,da base 2 a base 16 prendo i bita a 4 a 4 (sempre da destra verso sinistra):

dato 10 00 11 11 = = 10 001 111 = 2 1 7 base 8 nota: il raggruppamento = 1000 1111 = 8 F base 16 inizia da destra verso sin.

dato 10 10 10 10 10 == 1 010 101 010 = 1 2 5 2 base 8, bit a tre a tre;= 10 1010 1010 = 2 A A base 16, bit a 4 a quattro

90RAPPRESENTAZIONE BIN ... ultimi 4 esempi ...... e due es. da base 16 a base 8 (uso base 2):

7B5C dato in base 16 = = 0111 1011 0101 1100 cambio raggruppamento: = 0 111 101 101 011 100 = 0 7 5 5 3 4 (in base 8)

1991 dato in base 16 = = 0001 1001 1001 0001 cambio raggruppamento: = 0 001 100 110 010 001 = 0 1 4 6 2 1 (in base 8)

Page 16: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

91CAMBIO DI RAPPRESENTAZIONE DA DECIMALE ...procedimento per passare da base 10 ad altra base: richiedeun po' piu' lavoro, ma e' ancora basato sulla definizione:

L'ultima cifra di un codice numerico posizionale inbase b e' sempre il resto della divisione per b[“cio’ che resta dopo aver raggruppato gli oggetti a ba b"],quindi: dato un numero in base 10 ad es. 152,l'ultima cifra "a" della sua rappresentazione in base b ,...fedcba, e' data da (13 MOD 5 = resto di 13 diviso 5 = 3 !!):

n MOD b = 152 MOD b = (...fedcba) MOD b = a

ad es. se b=8 allora la cifra a = n MOD 8;

92CAMBIO DI RAPPRESENTAZIONE DA DECIMALE ...(ripeto..) dato numero n in base 10, l'ultima cifra "a" della suarappresentazione in base b , ...fedcba, e' data dal resto della divisionedi n per la nuova base b: n MOD b = (...fedcba) MOD b = a

per passare da codifica da base 10 (es. 152) in base 8, calcolole singole cifre (dall'ultima in poi) dividendo ripetutamente(ad ogni passo prendo come dividendo il quoziente del passoprecedente) per la base nuova (qui otto) e mi segno i resti(ottengo per prima l'ultima cifra) 152 = 19 * 8 + 0 -> resto 0 -> "a" =0, 19 = 2 * 8 + 3 -> resto 3 -> "b" =3, 2 = 0 * 8 + 2 -> resto 2 -> "c" =2, 0 = 0 * 8 + 0 -> resto 0 -> "d" =0,a questo punto smetto,

quindi 15210 = 2308

93CAMBIO DI RAPPRESENTAZIONE DA DECIMALE ...ancora, lo stesso dato in base 4:

152 = 38 * 4 + 0 -> resto 0 -> "a" = 0, 38 = 9 * 4 + 2 -> resto 2 -> "b" = 2, 9 = 2 * 4 + 1 -> resto 1 -> "c" = 1, 2 = 0 * 4 + 2 -> resto 2 -> "d" = 2, 0 = 0 * 4 + 0 -> resto 0 -> "e" = 0,

quindi 152 = 2120 10 4verifica (da ottale in base 4, passando per il binario):2 3 0 = 010 011 000 = 0 10 01 10 00 = 2120 8 2 2 4

... ricordiamo che era: 152 = 230 10 8

94esercizi:

calcolare 11011 + 110111 in base 2 <<<

quanto fa 322 + 123 in base 4 ?

quanto fa 322 + 123 in base 5 ? <<<

quanto fa 304 + 552 in base 6 ?

calcolare 701 + 77 in base 8

calcolare 1202 x 22 in base 3 <<<

95

1 1 0 1 1 addendo 1 1 0 1 1 1 addendo ------------ passo 1 1 0 1 1 0 0 somme1 1 1 1 riporti1

1 0 1 1 0 0 somme2 1 1 1 riporti2 ------------ passo 2 0 0 1 0 1 0 somme3 1 0 0 1 0 0 riporti 3

0 0 1 0 1 0 somme3 1 0 0 1 0 0 riporti 3 ------------ passo 3 1 0 0 0 0 1 0 somme4 1 riporti4

1 0 0 0 0 1 0 somme4 1 riporti4 ------------ passo 4 1 0 1 0 0 1 0 somma finale riporti finali

verifica: 110112 = 16+8+3=2710 ; 110 111 = 32+16+7=5510 ; 27+55= 8210 ; 8210 = 64+16+2=1 010 010

calcolare 11 011 + 110 111 in base 2 esercizi: 96

quanto fa 322 + 123 in base 4 ? 3 2 2 1 2 3 (n.b: 2+3=11) | ------ | in breve: 0 0 1 somme parziali | 3 2 2 1 1 1 riporti | 1 2 3 ------ | ------- 1 1 1 0 somma finale | 1 1 1 1

quanto fa 322 + 123 in base 5 ? in breve: 3 2 2 1 2 3 ------ 1 0 0 0

esercizi:

Page 17: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

97

quanto fa 304 + 552 in base 6 ?

3 0 4 5 5 2 1 3 0 0Ricorda (parto dalla colonna a destra): 4+2 = 610 , quindi 106 , scrivo cifra 0 riporto 1 0+5+1 = 610 , quindi cifra 0 e riporto 1, 3+5+1=910 = 136 , scrivo cifra 3 riporto 1 0+0+1=110 = 16 , e abbiamo finito

esercizi:

verifica:3046 = 3*36+4 = 108+4=11210; 5526=5*36+5*6+2=180+30+2=21210; quindi 11210+21210 = 32410 = 1*216+ 3*36+0*6+0*1 = 13006

98calcolare 701 + 77 in base 8 7 0 1 7 7 1 0 0 0(7018 = 7*6410 +1 = 44810 +1=449; 77 = 8*7+7 = 56+7 = 6310,44910+6310 = 51210 = 10008 )

calcolare 1202 x 22 in base 3 1 2 0 2 x 2 2 1 0 1 1 1 1 0 1 1 1 1 1 1 2 2 1verifica: 12023=27+2*9+2=4710; 223=6+2=810; prodotto: 47*8= 37610376:3=125,r 1; 125:3=41,r 2; 41:3=13,r 2; 13:3=4,r 1; 4:3=1,r 1;1112213 =1*243+1*81+1*27+2*9+2*3+1=243+81+27+18+6+1=37610

1 8 64 512 4096(0, 3, 6, 9, 12 bit)

esercizi:

1 3 9 27 81 243 ..

99eserciziverificare:

1a) 1984 (base 10) = 2201111 (base 3)1b) = 3700 (in base 8)

2) 2576 in base 8 = 010101111110 (in base 2)

3) 14 + 15 = 31 (base 8)

4) C * D = 9C (base 16)

(segue soluzione)

1001a) 1984 (base 10) = 2201111 (base 3)1984/3 = 661 resto 1 18 04 661/3 = 220 resto 1 1 6 01 220/3 = 73 resto 1 10 1 73/3 = 24 resto 1 13 1 24/3 = 8 resto 0 0 8/3 = 2 resto 2 2 2/3 = 0 resto 2

verifica:2201111 3 vale in base 10:(((((2*3+2)*3+0)*3+1)*3+1)*3+1)*3+1=(((( 8*3+0)*3+1)*3+1)*3+1)*3+1=((( 24*3+1)*3+1)*3+1)*3+1= ((73*3+1)*3+1)*3+1 =(220*3+1)*3+1 = 661*3+1= 1983+1 = 1984

101 esercizi 1b) 1984 (base 10) = 3700 (in base 8)

1984/8 = 248, resto 0 38 64 248/8 = 31, resto 0 0 31/8 = 3, resto 7

3/8 = 0, resto 3

Verifica: 3*8^3 + 7*8^2 +0 +0 = 3*512 + 7*64 = 1536 + 448 = 1984

102esercizi

2) 2576 in base 8 = 010101111110 (in base 2)

basta espandere le cifre ottali in gruppi di 3 bit,Ricordando la tabellina di corrispondenza binario - ottale:

0 000 da cui: 1 001 2 5 7 6 2 010 010 101 111 110 3 011 4 100 che e' il risultato richiesto .. 5 101 6 110 7 111

Page 18: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

103esercizi

3) 14 + 15 = 31 (base 8) .. ricorda la tabella di addizione

-------------------------- da cui: 0 | 0 1 2 3 4 5 6 7 1 4 1 | 1 2 3 4 5 6 7 10 + 1 5 2 | 2 3 4 5 6 7 10 11 ------ 3 | 3 4 5 6 7 10 11 12 2 1 4 | 4 5 6 7 10 11 12 13 <-1 5 | 5 6 7 10 11 12 13 14 ------ 6 | 6 7 10 11 12 13 14 15 3 1 7 | 7 10 11 12 13 14 15 16

verifica: 148+158=1210+1310=2510 = 318

8 9 10 11 12 13 14 15 1610 11 12 13 14 15 16 17 2017 18 19 20 21 22 23 24 2521 22 23 24 25 26 27 30 31

104esercizi 4) C * D = 9C (base 16)

C = 12 (ricorda: A=10, B=11, C=12, D=13, E=14, F=15) D = 13 12 * 13 = -------- 12 36 -------- 156 10 =

15610, divido ripetutamente per 16:156/16 = 9 (16*9= 144, 156-144=12=resto=C)9/16=0, resto 9, quindi 15610 = 9C16

105frazioni

FRAZIONI:

3,14 10 = xxxx,yyyyyyy k in base k

0,0005 10 = aaaa,bbbbbb k in base k

2007,9797 10 = cccc,dddddd k in base k

106 FRAZIONI

conversione di FRAZIONI

Cosa significa / come si interpreta in base 4 :

2321,0222

Oppure:

come si trasforma la codifica

39,71 da base 10 in base generica ?

107 FRAZIONInota: il significato delle cifre dopo la virgola in base B e'il contributo al valore complessivo dato dal prodotto dellacifra volte il peso associato alla posizione: i pesi sono ora 1/(potenza della base):

0,abcde... in base B

rappresenta il numero:

a b c d e --- + --- + --- + --- + --- + ... B B^2 B^3 B^4 b^5

108 FRAZIONICambio base:

29,45 = 29 + 0,45

per cambiare base trasformo separatamentela parte intera e separatamente la parte fratta:

Per la parte intera sappiamo gia' come fare 29 (base 10) = xxx (base b)Per la parte fratta: 0,45 = 0,abcdef... in altra base b ?

Page 19: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

109 FRAZIONIPer la parte fratta: 0,45 = 0,abcdef... in altra base b ?

ricorda la definizione:0,45 = 4/10 + 5/100 ... e :0,abcde in base b significa ovviamente a/10 + b/100 + c/1000 + d/10000 + e/100000essendo 10, 100, 1000 ecc espressi nella nuova base,ovvero b, b^2, b^3, ecc

110 FRAZIONIAncora: 0,5 in base 10 vale 0,1 in base 2 (un mezzo)-- ovvero: 5/10 (base 10) = 1/2 in base 10 = 1/10 (base 2)quindi 0,510 = 0,12

Ancora: 0,125 in base 10 = 1/8 in base 10 = 1/100 in base 2quindi 0,12510 = 0,0012

111conversione di base per frazioni 0,45 = 0,abcdef... conversione da base 10 a base 5 se moltiplico entrambe le parti per b : 0,45 * 5 = 0,abcdef... * 5 ottengo: 2,25 = a,bcdef...devono essere separatamente uguali la parte intera e laparte fratta, quindi 2 = aottengo la prima cifra della parte fratta moltiplicandoil dato di partenza (in base 10) per la base nuova b (quicinque);ripeto con solo la parte fratta: 0,25 * 5 = 0,bcdef * 5 ottengo: 1,25 = b,cdef... e quindi 1 = b

112 FRAZIONI 0,4510 = 0,abcdef... b da base 10 ad altra base b

procedimento per calcolare le cifre abcdef...della parte fratta nella nuova base:moltiplico entrambe le parti per b - 0,xxx * b = 0,abcdef... * bottengo a sinistra e a destra una cifra intera, y,zzz = a,bcdef...devono essere uguali sia la parte intera che la partefratta, separatamente, quindi ottengo la prima cifradella parte fratta !

y = a ... e poi ripeto ...

113conversione di base per frazioni 0,45 = 0,abcdef... conversione da base 10 a base 5moltiplico ripetutamente entrambe le parti per b,ad ogni passo ottengo una cifra della parte fratta inbase b, e poi ripeto con solo la parte fratta rimasta: 0,45 * 5 = 0,abcdef... * 5 ottengo: 2,25 = a,bcdef... quindi a = 2; ripeto: 0,25 * 5 = 0,bcdef... * 5 ottengo: 1,25 = b,cdef... e quindi b = 1; ripeto: 0,25 * 5 = 0,cdef... * 5 ottengo: 1,25 = c,def... e quindi c = 1; ripetendo, 0,4510 = 0,211111... 5 in base 5 (periodico)

114conversione di base per frazioni2) esempio: trasformare 0,71 da base 10 in base 5,cioe' trovare le cifre a,b,c,d,... della parte fratta in base 5. 0,71 = 0,abcdefg.. ==>> moltiplico ripetutamente per 5: / in base 10 \ / parte in base 5 \0,71 * 5 = 3,55 = a,bcdefg... quindi a = 30,55 * 5 = 2,75 = b,cdefg.... quindi b = 20,75 * 5 = 3,75 = c,defg..... quindi c = 30,75 * 5 = 3,75 = d,efg...... quindi d = 3 (periodico)

quindi 0,7110 = 0 , 3 2 3 3 3 35 cioe' 7 1 3 2 3 3 --- + --- = --- + --- + --- + --- + ... 10 100 5 25 125 625

nota: spesso ottengo un numero periodico nella nuova base!

Page 20: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

115conversione di base per frazioni3) es.: trovare la rappresentazione di 0,45 (dato in base 10)in base 8, ovvero trovare le cifre a,b,c,d,e,f,g, ... tali che 0,4510 = 0,abcdefg ... 8

Moltiplico per la base nuova ripetutamente

ParteFratta 0,45*8 =3,6 = a,bcdefg-> a=3 0,6 *8 =4,8 = b,cdefg... b=4 0,8 *8 =6,4 = c,defg... c=6 0,4 *8 =3,2 = d,efg... d=3 0,2 *8 =1,6 = e,fg... e=1 0,6 *8 =4,8 = f,g... f=4 0,8 *8 =6,4 = g,... g=6

la sequenza 4 6 3 1 si ripete, quindi: 0,45 (base 10) = 0,3 4631 4631 4631 ...

116nota sul cambio di baseEntrambi i procedimenti di conversione (parte intera e parte fratta)sono basati sul fatto che:

dividere (o moltiplicare) per la base b significa spostare la virgola (di base b) di una posizione a sinistra (o a destra) (come ovvio in base 10);

Esempi in binario: 11 x 10 = 110 (3 x 2 = 6) 101 x 10 = 1010 (5 x 2 = 10) 110 x 10 = 1100 (6 x 2 = 12) 111 x 10 = 1110 (7 x 2 = 14)

1110 : 10 = 111 (14 : 2 = 7) 1010 : 2 = 101 (10 : 2 = 5 ) 1000 : 10 = 100 (8 : 2 = 4) ecc

117Note sul cambio baseCome si scrive 0,1 (base dieci)

in base due?

ovvero - se scrivo 1/10 in base due, lo scrivo in formadi somma di termini 1/( 2^n ), con n=1,2,3,4, ovvero:

1/10 = a/2 + b/4 + c/8 + d/16 + …

quanto valgono a, b, c, d ecc?

vediamo …

118come si scrive 1/10 (decimale) in base due? 0,110 = 0,abcde...2dalla definizione, per la prime cifre della frazione:1) moltiplico la equazione di sopra per due, e ottengo(ricorda: moltiplicare per la base 2 significa spostarela virgola binaria di una posizione a destra) 0,2 = a,bcdedevono essere separatamente uguali parte interaqui zero, e quindi a=0, e la parte fratta, e quindiresta: 0,2 = 0,bcde2) ripeto per la parte fratta residua: moltiplico perdue e ho: 0,4 = b,cdedevono essere separatamente uguali parte interaquindi b=0, e la parte fratta: 0,4 = 0,cde

119 0,110 = 0,abcde...2per la prime cinque cifre della frazione:1) moltiplico la equazione di sopra per due, e ottengo 0,2 = a,bcdeseparatamente uguali parte intera quindi a=0,e parte fratta, e quindi resta 0,2 = 0,bcde2) ripeto per la parte fratta residua: moltiplico perdue e ho: 0,4 = b,cdedevono essere separatamente uguali parte interaquindi b=0, e la parte fratta: resta 0,4 = 0,cde3) 0,4*2=0,8 c=0, resta 0,8 = 0,def..4) 0,8*2=1,6 d=1, resta 0,6 = 0,ef..5) 0,6*2=1,2 e=1, resta 0,2 = 0,f...

quindi le prime cinque cifre sono abcde = 000110,110 = 0,a bcde = 0,0 00112rimane da calcolare 0,2 = 0,fghi che e' la stessasituazione di 0,2 = a,bcde

120quindi 1/10 (decimale) in base duecon moltiplicazioni per due ripetute: 0,1=0,abcdefghi...

1) 0,1*2=0,2 a=0, resta 0,2= 0,bcdefghi2) 0,2*2=0,4 b=0, resta 0,4= 0,cdefghi3) 0,4*2=0,8 c=0, resta 0,8= 0,defghi..4) 0,8*2=1,6 d=1, resta 0,6= 0,efghi...5) 0,6*2=1,2 e=1, resta 0,2= 0,fghi...6) 0,2*2=0,4 f=0, resta 0,4= 0,ghij...7) 0,4*2=0,8 g=0, resta 0,8= 0,hijk...8) 0,8*2=1,6 h=1, resta 0,6= 0,ijkl...9) 0,6*2=1,2 i=1, resta 0,2= 0,jklm...

0,110=0,a bcde fghi jklm0,110=0,0 0011 0011 00112 la sequenza 0011 si ripeteall'infinito (frazione periodica), e quindi0,110=0,0 0011 0011 0011 0011 0011 0011 ..2

Page 21: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

121come si scrive 1/10 (decimale) in base due?abbiamo visto come si ricava 0,1 = 0,abcdefghi...0,110= 0,0 0011 0011 0011 0011 0011 00112con 5 addendi (approssimazione di 1/10 con 5 bit):

0.1=1/10 (base10) = 0/2 + 0/4 + 0/8 + 1/16 + 1/32 +trascuto i termini seguenti + 0/64+0/128 + 1/256 + 1/512 + 0/1024 + 0/2048 + 1/4096+..e quindi 0/1010 = 0,000112 (approssimazione a 5 cifre) ->0,000112= 0,0625 + 0,03125 + 0,00390625 + 0,001953125 + + 0,00024414062= 0,0998535...10 che e' DIVERSO da 0,1 !

122come si scrive 1/10 (decimale) in base due?passando da base 10 a base 2 la frazione 0,1 (1/10 in base 10)diventa una frazione periodica ovvero con infinite cifre,0,110= 0,0 0011 0011 0011 0011 0011 001120.1=1/10 (base10) = 1/16 + 1/32 + 1/256 + 1/512 + 1/4096+..e quindi con 12 cifre binarie della frazione (5 addendi) :0,000110011001 = 0,0625 + 0,03125 + 0,00390625 +0,001953125 + 0,00024414062 = 0,099853516 ... non e' 0,110 !.. e in generale con un numero limitato (es.24 cifre binarie)ottengo una rappresentazione APPROSSIMATA di 0,1 Si noti che 1/10 = 0,1 in base 10 NON e' rappresentabileesattamente in base due con un numero finito di cifre, (siDEVE fare un troncamento -> in ogni caso ho un errore !! )

123frazioniAnche la trasformazione opposta, da base generica in base dieci,si basa sulla definizione:

es per base 2:dato 0,1011 in base due,

0,1011 = 1/2 + 0/4 + 1/8 + 1/16 ... in base 10,quindi = 0,5 + 0,0 +0,125 + 0,0625 = = 0,6875 in base 10

124 frazionibase 16 - ogni cifra esadecimale usa 4 bit;il numero di bit usati per le potenze di 16: nr.bit1)1016 = 1610 = 16^1 ......... 42)10016 = 25610 = 16^2 ......... 83)100016 = 409610 = 16^3 ...... 124) 65 536 = 16^4 ........ 165) 1048 576, ..... 20 (un mega)6) 16 777 216, ..... 247) 268 435 456, ... 288) 4 294 967 296, ... 32 (4 giga)per scrivere un valore di 4G devo usare 32bit (un indirizzo di 4G usa 32 bit; perindirizzi oltre 4G devo usare piu' di 32bit -> 64 bit; ritorneremo su questo in HW

125conversione di frazioni: da base 16 a base 10

es 0,5A5116 (4 cifre esadecimali = 16 bit)

= 5/1610 + 10/25610 + 5/409610 + 1/6553610

= 0,312510 + 0,039062510 + 0,001220703110 + 0,000015258789..10

= 0,35278320312.. 10

( se converto da base 16 a base 10 un numero con kcifre (k limitato) - il numero di cifre del risultato inbase 10 e' finito o no? ;-)

126frazioniquando si converte una frazione con un n umero di cifrelimitato da base generica a base dieci, il calcolo da fare e' la somma di termini del tipo k / ( b n )dove 1/(bn) in genere NON e' rappresentabile con unnumero di cifre finito in base 10, es. banale: 0,1 3 = 1/3 = 0,33333...10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

MA per le basi 2,4,8,16, ecc. il numero 1/x = (con x=b^n) = = 1/(b^n) ( con b = 2 oppure 4 oppure 8 ecc )e' sempre rappresentabile esattamente con un numero dicifre finito ... basti pensare alla sequenza 0,5 0,25 0,125 0,0625 0,03125 ecc

Page 22: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

127frazioninota:una frazione con un numero fisso di cifre in binario siconverte sempre in una frazione in decimale con un numerodi cifre limitato, perche' 1/(2 k) ovvero ½, ¼, 1/8, 1/16,1/32 ecc hanno un numero di cifre decimali limitato:1/2 0,5 1/512 0,0019531251/4 0,25 1/1024 0,00097656251/8 0,125 1/2048 0,000488281251/16 0,0625 1/4096 0,0002441406251/32 0,03125 1/8192 0,00012207031251/64 0,015625 1/16384 0,000061035156251/128 0,0078125 1/32768 0,0000305175781251/256 0,00390625 1/65536 0,0000152587890625 .... 1/2n 0,00000000..abcd..gh25

128limiti

rappresentazione dei numeri

NEL calcolatore:

i limiti dei formati standard (fissi)

129rappresentazione di numeri

nel calcolatore i codici per rappresentare i numeri sono ingenerale fissi – questo perche'

le celle di memoria centrale dove sono memorizzati i numeri(quando usati da un programma)sono a formato fisso (ad es. 16 bit, 32 bit, 64 bit)

e i circuiti che eseguono le operazioni aritmetiche(sia per interi che per virgola mobile)sono a formato fisso;

seguono due pagine di richiamo di nozioni sullamemoria centrale e sull' unita' centrale, che saranno trattatemeglio in seguito...

130rappresentazione di numerimemoria: insieme di celle ( o voci ) numerate: ciascuna ha -

un indirizzo (numero della cella) (indirizzi da 0 a max, numeri da N bit, gli indirizzi oggi (2006) arrivano oltre il Gbyte, sono numeri a 16 bit (anni 80) poi 32 bit ('90), oggi a 64 bit, che permette di contare oltre 10 18 (miliardo di miliardi) !!

e un contenuto = valore o codice del dato memorizzato nella cella: K bit, dove K e' una potenza di 2: 8 (8bit=1byte), 16, 32, 64 bit: questo e' fisso per tutte le celle del calcolatore;

la circuiteria elettronica che gestisce la memoria svolge lafunzione di accesso alla memoria: leggi un dato ( di K bit) dalla cella di memoria di indirizzo I (di N bit) scrivi un dato ( di K bit) nella cella di memoria di indirizzo I (di N bit)

131rappresentazione di numeril'UC esegue le istruzioni dei programmi

la parte dell'unita' centrale che esegue le operazioniaritmetiche (+ - * /) e' detta unita'aritmetica, ed e' quasisempre sdoppiata in * unita' per aritmetica intera * unita' per aritmetica in virgola mobileentrambe le unita' aritmetiche hanno i canali (bus) di ingresso dati e di uscita dati (risultati)a formato fisso, ad es. 32 oppure 64 bit(ma anche piu', 80 bit, 128 bit)==>>i dati interi e in virgola mobile sono a formato fisso(quasi sempre)

132rappresentazione di numeriagli inizi sono stati usati sistemi di codifica di numeridi tipo diverso : * per soddisfare le esigenze di calcolo scientifico e * e per soddisfare le esigenze delle applicazionicommerciali: per il calcolo scientifico furono adottati dueformati di codifica: numeri interi con segno, es.: +06220716 numeri in virgola mobile con segno, es.: +3,1415927E-0 entrambi a formato fisso (es. sopra, otto cifre)

i primi 15 anni esistevano calcolatori con codifica dinumeri a lunghezza variabile e HW opportuno pertrattarli; oggi esistono codifiche a lunghezzavariabile ma sono in generale gestite da software;

Page 23: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

133rappresentazione di numeri * per esigenze delle applicazioni commercialiesistono linguaggi di programmazione e sistemisoftware con codifica di numeri a lunghezzavariabile, di tre tipi:interi numero alberi (pini) davanti l'edificio C0 (Tutankamen): uno; numero anni galera per falso in bilancio: 0 numero esami di fondamenti di informatica 1 nel 2007: 91 numero lingue ufficialmente riconosciute: 5000 numero testate atomiche USA+Russia+Cina+GB+Francia+Israele al 2002: 10500

numeri con virgola fissa es: indennità mensile (netto) di un senatore in Italia +diaria+rimborsi: 12.138,30 euro deficit bilancia imp/exp al luglio 05 degli USA : 59 500 000 000 , 00 $

numeri con virgola mobile velocita' della luce : 299792,458 km/sec ("grande") massa elettrone: 9.10938188 × 10-31 kilo ("piccolo")

134rappresentazione di numeri

nel calcolatore i codici per rappresentare i numerisono in generale a formato fisso: il formato fissoimpone dei limiti ai codici utilizzabili e quindi all'insieme di numeri rappresentabilil' insieme dei numeri rappresentabili (interi e invirgola mobile) e' limitato

i numeri fuori dei limiti NON sono rappresentabili !un'operazione aritmetica che produce un valore fuoridi questi limiti da'un errore di overflow/traboccamen-to (il programma si blocca per errore di aritmeticafloating, rilevato HW "eccezione o interrupt")

135rappresentazione di numeri - casi particolari :talvolta e’ richiesta una rappresentazione esatta dei numeri,qualunque sia il loro valore es. bilancio di una ditta (pubblico o riservato) devo rappresentare i dati esattamente ...che sono appunto tipiche applicazioni commerciali :

per molte applicazioni di tale tipo la rappresentazione deinumeri non e' a formato fisso, ma con sequenze di cifre dilunghezza non fissa, delimitate con codici particolari …(es. Linguaggio di programmazione Cobol)alcuni calcoli tecnico/scientifici particolari richiedono unanumero di cifre molto grande (illimitato in pratica):l'aritmetica in tal caso e' gestita a livello SW.

136rappresentazione di numeri

altri esempi di dati di tipo intero:

*numero abitanti di Villalta di Porpetto, *numero abitanti di Cheng-du (Cina), *paga operaio di 9 anni di una fabbrica Nike in Marocco, *numero studenti del corso di fondam. di inform. del 1996, *numero CD della biblioteca comunale del popolo di Udine, *ammontare di una consulenza dell’ avvocato Schwindler, *patrimonio complessivo di Bill Gates (in dollari), *numero dei granelli di sabbia della riviera di Lignano,

... vediamo ora " un altro tipo di dati " ...

137rappresentazione di numeriin molti casi interessa di un dato

** solo un certo numero di cifre di un dato tipicamente per grandezze che hanno orgine da misure tecniche o scientifiche, ad es.* distanza terra - luna, (precisione di 10 cifre) oppure* diametro cilindro della moto Honda Goldwing (precisione di 4 cifre, al 1/100 di mm)* quantita’ media di birra e di caffe’ (bevuta da un tedesco medio) precisione di 2 cifre** e l’ordine di grandezza ...in unita' di misura appropriate,come anni luce, chilometri, millimetri, piedi, pollici,klaftre, galloni, barili, miglia marine,

138rappresentazione di numeriPer dati che hanno origine da misure (direttamente oattraverso calcoli) viene usato il formato in virgola mobile (*)che specifica le cifre e l'ordine di grandezza con due interiseparati: +3,14159265 E+00dove i due numeri interi hanno un formato fisso (k1 e k2cifre, qui k1=9 cifre e k2=2 cifre) -------------------------------------------------------------------------------------------------------------

(*) formato in virgola fissa significa un intero cherappresenta anche cifre decimali, ad es.: dati di 15 cifre:00001 234 56 00000 rappresenta 1234, 5600123 456 78 91230 rappresenta 123456,789123009999 999 00 00000 rappresenta 999999900000 000 00 23456 rappresenta 0,0023456era usato nelle macchine calcolatrici elettromeccaniche

Page 24: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

139

tutte queste esigenze hanno risposte oggi standardnell’ambito della rappresentazione di numeri all’interno delcalcolatore, e nei limiti di queste rappresentazioni.

altri es numero soci della Miracle.com 30.402.002,0 (unita') altezza del tavolo 82,5 centimetri (valore approssimato a 3 cifre) lunghezza delle coste marine italiane 9,532543E+3 chilometri ( ... falso, non so il valore vero;-) valore di pi 3,14159265E+00 (approssimato a 8 cifre)per capire meglio cos’e’ un oggetto tipo “numero” per ilcalcolatore, studieremo di seguito i vari sistemi dirappresentazione di numeri.

rappresentazione di numeri 140rappresentazione di numeritutti i dati / tutti i tipi di informazione per il calcolatoresi riducono sempre a codici numerici;

es.: le immagini fotografiche o televisive o del cinema chetradizionalmente nascono "analogiche" (segnale continuo)e vengono "usate" ancora analogichesi possono trasformare in dati numerici (in formato digitale)

analogamente i suoni (di vario genere) si possono codificarenumericamente (suono digitale)

si noti che la precisione (e quindi la qualita') ottenibile conmetodi analogici e' in generale minore rispetto la qualita' disegnali codificati numericamentevedremo ...

141rappresentazione di numeritutti i dati / tutti i tipi di informazione per il calcolatoresi riducono a codici numerici; es.:

gli attributi di un punto dell’ immagine sullo schermo(un elemento dell’immagine = Picture Element = PIXEL)come intensita’ luminosa, tonalita’ di colore, saturazione,oppure intensita’ dei colori primari che lo compongonoRosso, Verde e Blu)sono rappresentabili con valori numerici, un pixel si codifica con "un" numero (una terna di num.) l'immagine sullo schermo e'un insieme di numeri (quanti – dipende dalla precisione immagine, va da 25 x 80 a 480 x 640 (VGA) a 1000 x 1600, 2000 x 3000 ecc ...

142limiti della codifica nel calcolatorein un calcolatore i numeri sono codificati in binario con unnumero fisso di bit (una potenza di 2: 8, 16, 32, 64, 96) -e solo un numero limitato di interi e' rappresentabile.Ad esempio, gli interi sono rappresentati con (*)

8 bit, da 0 a 255 oppure da -128 a +127 (in C: short int) (+)

16 bit da 0 a 65 535 oppure da -32 768 a 32 767 (in C: int) 32 bit, da 0 a 4 294 967 295 oppure da -2G a + 2G, (in C: long int) 64 bit, long long int 80 bit ... ecc________________________________________________________________________________________________ (*) 4 bit: 0..15; 8 bit: 0..255; 10 bit: 0..1023; 12 bit: 0..4095,.. (+) int, short int = nomi di tipi di variabili nel linguaggio di programmazione C

143limiti della codifica nel calcolatore - esempio:con 4 bit, sono rappresentabili 16 numeri senza segno:00 00 =0 01 00 =4 10 00 =8 11 00=1200 01 =1 01 01 =5 10 01 =9 11 01=1300 10 =2 01 10 =6 10 10 =10 11 10=1400 11 =3 01 11 =7 10 11 =11 11 11=15

e i numeri da 16 in poi NON sono piu' rappresentabili.se uso sempre 4 bit, un'operazione aritmetica puo' dare unrisultato non rappresentabile con tale formato: 1010 ovvero 10 + 111 +7 ---------- --------

10001 17

il risultato esce dall' insieme dei numeri rappresentabili, ->errore di troncamento o traboccamento = "overflow"

144limiti della codifica nel calcolatoreAnalogamente (o peggio) per le frazioni:ricordiamo solo il numero 1/1010, cioe'0,110= 0,0 0011 0011 0011 0011 0011 0011...20,1=1/10 (base10) = 1/16 + 1/32 + 1/256 + 1/512 + 1/4096+..e quindi con 12 cifre binarie dopo la virgola ( 5 addendi )0,0001 1001 1001 = 0,0625 + 0,03125 + 0,00390625 + + 0,001953125 + 0,00024414062= 0,099853516 che e' diverso dal dato 0,1 !!con formato fisso di 8 bit la rappresentazione di 0,1 diventa:0,0001 1001 = 1/16 + 1/32 + 1/256 = 0,0625+ 0,03125+ 0,00390625 = 0,09765625che e' (ovviamente) anora peggio (piu' diverso da 0,1) !

Page 25: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

145

rappresentazione di

numeri con segno

146RAPPRESENTAZIONE DI NUMERI CON SEGNO

con 3 bit rappresento 8 oggetti diversi,(ad esempio con 3 bit posso contare fino a 7, quindirappresento otto numeri da 0 a 9);

finora abbiamo visto la codifica per numeri senza segno,

ma posso rappresentare con gli stessi codici anche numerinegativi,

di solito si associa la meta' dei codici ai numeri positivi, emeta' dei codici ai numeri negativi:

esempio con 2 bit ho: 00 = 0 01 = 1 10 = 2 11 = 3

oppure 00 = 0 01 = 1 10 = -1 11 = -1

147RAPPRESENTAZIONE DI NUMERI CON SEGNOcon 3 bit rappresento 8 oggetti diversi, (es.otto numeri);posso rappresentare con gli stessi codici anche numeri negativi,(di solito meta' codici per positivi, meta' per negativi),come in figura:

000 0001 1010 2011 3100 4101 5110 6111 7senzasegno

000 -4001 -3010 -2011 -1100 0101 1110 2111 3consegno/a

000 0001 1010 -1011 2100 -2101 3110 -3111 4consegno/b

000 -1001 -2010 -3011 -4100 0101 1110 2111 3consegno/c

... in quanti modi posso associare 8 simboli a 8 codifiche?

148... in quanti modi posso associare 8 simboli a 8 codifiche?

quante codifiche binarie diverse posso avere per 8simboli ? dati 8 simboli ( a, b, c, d, e, f, g, h ),dati 8 codici binari a 3 bit, es.( 111 110 101 100 011 010 001 000 )posso associare al primo simbolo a uno qualunque dei 8codici a 3 bit, ad es. a = 011 (A) (8 scelte possibili);al secondo simbolo posso associare uno qualunque dei 7codici rimasti, ad es. b = 110 (B) in totale per i primi duesimboli posso fare 8*7 scelte per le due codifiche:

a, b, c, d, e, f, g, h

111 110 101 100 011 010 001 000

(A) (B)

149... in quanti modi posso associare 8 simboli a 8 codifiche?dati 8 simboli ( a, b, c, d, e, f, g, h ), dati 8 codici binaria 3 bit, ( 111 110 101 100 011 010 001 000 )posso associare al primo simbolo "a" uno qualunque dei 8codici a 3 bit, ad es. a = 011 (8 scelte possibili);al secondo simbolo "b" posso associare uno qualunque dei 7codici rimasti, ad es. b = 110, (7 scelte);al terzo simbolo "c" posso associare un codice dei 6 codicirimasti, es. c= 000 (6 scelte)poi 5 scelte per il quarto, 4 scelte per il quinto simbolo,

in totale per 8 simboli posso fare 8*7*6*5*4*3*2*1 scelte;

per 8 simboli con un codice a 3 bit posso fare 8 !(8 fattoriale) scelte, cioe' 40320 scelte.

150 Codifica numeri interi con segno

Dati 8 codici binari posso scegliere 8! modi per usarli nellarappresentazione di 8 numeri interi con segno, meta' positivie meta' negativi (qui 5 dei 8! = 40320 possibili codici diversi )

codice num1 num2 num3 num4 num5 …

0 000 -3 -4 3 0 0 1 001 -2 -3 2 1 -0 2 010 -1 -2 1 2 1 3 011 -0 -1 0 3 -1 4 100 +1 0 -1 -3 2 5 101 +2 1 -2 -2 -3 6 110 +3 2 -3 -1 3 7 111 +4 3 -4 -0 -4

Page 26: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

151cont. RAPPRESENTAZIONE DI NUMERI CON SEGNOper rappresentare numeri negativi con n bit (ad es. 4 bit),uso delle regole convenzionali di rappresentazione;caso piu' semplice: un bit per il segno, il resto rimane uguale;2 possibilita’: rappresento segno meno con bit 1 o con bit 0:000 0 +0 -0001 1 +1 -1010 2 +2 -2011 3 +3 -3100 4 -0 +0101 5 -1 +1110 6 -2 +2111 7 -3 +3

RAPPRESENTAZIONE :GRANDEZZA CON UN BITPER IL SEGNOquesta codifica non e’ usata ;-) (richiede una logica piu' complicata per la realizzazione circuitale)

vediamo ora le 3 codifiche piu’ usate per i numeri con segno:complemento a uno, complemento a due, con eccesso di 2^(k-1)

152

0 000 +0 1 001 +1 2 010 +2 3 011 +3 4 100 -3 5 101 -2 <-- 6 110 -1 7 111 -0

in complemento a uno la codifica di un numero negativo siottiene scambiando uni e zeri, rango per rango, ovverofacendo il complemento bit per bit:codice di +2 = 0 10 -->> cod.di -2 = 1 01dove il primo bit e’ il bit del segno, gli altri codificano il num

numeri con segno : il complemento a uno

RAPPRESENTAZIONEDI NUMERI CON SEGNO IN COMPLEMENTO A UNO QUI CON 3 BIT + 1 BIT SEGNO

153numeri con segno : il complemento a unoin complemento a uno la codifica di un numero negativosi ottiene scambiando uni e zeri, rango per rango,ovvero facendo il complemento bit per bit:il primo bit e’ il bit del segno, gli altri codificano il numero 0 000 +0 1 001 +1 2 010 +2 3 011 +3 4 100 -3 5 101 -2 <-- 6 110 -1 7 111 -0

codice +2 = 0 10codice -2 = 1 01

codice +3 = 0 11codice -3 = 1 00

154numeri con segno : il complemento a unoin complemento a uno: -x e' rappresentato con ilcomplemento di x bit per bit, cioe' da: (2 n -1) -x (*)

-5 in un codice a 4 bit in complemento a uno e’ dato da: (24 -1) -x = (16-1 -5) = (15 - 5)10 = (10000 - 1)2 - 1012 = 1111 - 0101 = 1010 = complemento bit per bit di 0101

-3 in un codice a 4 bit in complemento a uno e’ dato da: (24-1) - x = (10000 -1 ) -3 = 1111 - 0011 = 1100 da cui la tabella gia’ vista..

(*) nota: se uso n bit, 2 n non e’ rappresentabile ad es. se uso 3 bit, 2 3 = 8 = 1000 non e’ rappresentabile; il numero piu’ grande rappresentabile con n bit e’ 2n -1, che e' il codice con tutti i bit messi a 1 !! ad es. con 3 bit e’ 111 = 1000 - 1 = 8 - 1=7 )

155numeri con segno : il complemento a unocomplemento a uno: -x e' rappresentato con il compl. di xbit per bit, cioe' -x e’ rappresentato da (2 n -1) - x = 11..11 - x es -5 codifica con 4 bit in complemento a uno: (2 4 -1) -x = (10000 - 1) - 5 = 1111 - 0101 = 1010

0 0 000 +0 | 1 111 -0 1 0 001 +1 | 1 110 -1 2 0 010 +2 | 1 101 -2 3 0 011 +3 | 1 100 -3 4 0 100 +4 | 1 011 -4 5 0 101 +5 | 1 010 -5 6 0 110 +6 | 1 001 -6 7 0 111 +7 | 1 000 -7

si noti: la codifica e’ simmetrica, i numeri rappresentabilicon 4 bit vanno da -7 a +7, vi sono due codifiche dello zero!

156numeri con segno : il complemento a unocon 4 bit (numero bit n=4) ho: 0 0 000 +0 | 1 111 -0 1 0 001 +1 | 1 110 -1 ... .. | ... .. 6 0 110 +6 | 1 001 -6 7 0 111 +7 | 1 000 -7[n = 4, n-1 = 3 bit per il dato -> per i positivi da 0 a 7, per inegativi, da - 0 a - 7] in generale in complemento a unocon n bit rappresento i numeri da - (2n-1-1 ) a + (2n-1-1 )

il num. piu’ positivo x ha il codice (2n-1-1 ) = 23 -1 = 1000-1 = 0111 = 7,

il numero piu’ negativo -x e’ rappresentato (ha il codice) da( 2n -1 - x) = ( (2n -1) - (2n-1 - 1 )) = (2n-1 +2n-1 -1) - (2n-1 -1 )) = = 2n-1 + 2n-1 -1 - 2n-1 + 1 = 2n-1 -1 +1 = = 2n-1 = ( se n=4) = 8 = 1000 = rappresentazione di -7...

Page 27: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

157numeri con segno : il complemento a unoil codice (complemento a uno) di un dato negativo e' dato daibit del dato (positivo), complementati uno per uno:

0110 sei, 1001 meno sei, 0101 cinque, 1010 meno cinquequesto codice permette di fare l' ARITMETICA di numericon segno in modo semplice : 3 - 4 = -1in codice binario con complemento a uno?

la rappresentazione in complemento a unoe' consistente con le operazioni di aritmetica,ovvero posso sommare i codici di un numero positivo e di unnumero negativo e ottenere il codice corretto del risultato.vi sono tre casi da considerare a seconda dei riporti riguardoil bit del segno (nessuno, uno, due riporti) ... vediamo ...

158 aritmetica in complemento a unola rappresentazione in complemento a uno e' consistente conle opera- zioni di aritmetica: si sommano i codici dei numericon segno e e si ottiene il codice corretto del risultato: due casi senza riporto al- o dal- bit del segno:1) caso di risultato positivo 3+2 = +5 0 0 1 1 3

0 0 1 0 2 -------- -- 0 1 0 1 5

-------------------------------------------------------------------------------------------------------------2) caso di risultato negativo 3-4 = -1 0 0 1 1 3

1 0 1 1 -43+ [(24-1)-4]= (24-1)-1 = -------- --che e' la codifica di -1 1 1 1 0 -1

159numeri con segno : il complemento a unoaritmetica numeri con segno, caso con 2 riporti al/dal segno:

3) caso di risultato positivo 7 - 4 = 3

nota: codice di -4 = 0 1 1 1 724-1 –4 = 1111-0100 1 0 1 1 -4Quindi (24-1) + 7-4 = ------- --24 -1 + 3 = 1 0 0 1 0 224 + 2 =>c'e' un riporto a sini- + 1 +1stra, dal bit del segno, ------- --il riporto si somma a destra, 1 1 3ultimo rango a destra, con lacorrezione otteniamo 1+2 = 3

nota che c'e' un riporto anche NEL bit del segno: vi sono due riporti !

160

0 1 0 1 5 1 1 0 0 -3 ------- -- 1 0 0 0 1 +1 1 +1 -------- -- 1 0 2

SOMMA DI NUMERIIN COMPLEMENTO AUNO:se vi sonodue riporti, unoal bit del segnoe uno dal bit delsegno, il riportoda sinistra (dalsegno) si somma adestra

numeri con segno : il complemento a uno 3) ancora: caso di risultato positivo 5 - 3 = 2

161

se il risultato 0 1 0 0 4e' negativo, e non 1 0 0 1 -6vi sono riporti ne' ------- --nel bit del segno, 1 1 0 1 -2ne' dal bit del segno,

allora otteniamo il risultatodirettamente dalla somma dei duecodici

numeri con segno : il complemento a uno 4) caso di risultato negativo, senza riporti: 4-6=-2

1625) caso di risultato negativo, due riporti: -1 -5 = -6

-1-5 = codici di –1 e –5in complemento a uno:[(24-1)-1]+[(24-1)-5]= 1 1 1 0 -1 1 0 1 0 -5 [24+(24-1)-7 ] = ------- -- 1 1 0 0 0 -7il riporto da sinistra +1 +1si somma a destra --------- -- 1 0 0 1 -6

Page 28: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

163numeri con segno : il complemento a uno

nella somma di due numeri con segno codificati incomplemento a uno si hanno le regole seguenti (regolerealizzate dai circuiti elettronici dell'unita' aritmetica)* nessun riporto nel / dal bit del segno ok, niente daaggiustare* due riporti (nel/dal bit del segno) ok, e ilriporto fuori del segno a sinistra si somma adestra (rango delle unita')e se c'e' un solo riporto (dal bit del segno oppure nel bit delsegno) in tal caso il risultato NON e' corretto, c'e' un errore di trabboccamento (overflow)vediamo questi casi di risultato errato ...

164numeri con segno : il complemento a uno7) caso di overflow,dove il risultato NONe’rappresentabile(un solo riporto al segno)

5 0 1 0 1 risultato si legge 5+6= -4 6 0 1 1 0 [[un solo riporto verso il -- ------- bit segno -> errore di 11 1 0 1 1 traboccamento->overflow]]

8) caso di overflow

-5 1 0 1 0 [[un solo riporto dal bit -6 1 0 0 1 del segno -> errore --- -------- di overflow ]] -11 1 0 0 1 1 si ottiene: -5-6 = 3

165numeri con segno, complemento a uno:riassumendo, la codifica dei numeri con segno incomplemento a uno (num.negativi rappresentati dal codicedei numeri positivi complementando i bit uno a uno) e' un codice consistente con le operazioni aritmetiche, ed e' un codice simmetrico rispetto lo zero:

+6 codice 0 110 -6 codice 1 001

due zeri: +0 0 000 -0 codice 1 000

limiti simmetrici, per positivi e per negativi, da 0 a (2^(n-1)) -1 , con n=4 bit il limite e' (2^3-1) cioe':

+7 0 111 -7 codice 1 111

166numeri con segno, complemento a due:una codifica oggi piu' usata:

numeri con segno in complemento a due:e' simile alla codifica in complemento a uno,ma con i codici spostati di una posizionee con un solo codice per lo zero;

la rappresentazione di un numero negativo incomplemento a due e’ data dal complemento bit perbit, e poi sommando uno: +6 codice di +6 e' 0 110, -6 codice di -6 e' 1 001 +1 = 1 010

167numeri con segno, complemento a due:un primo esempio con 3 bit per il codice con segno (un bit per il segno,due bit per il dato)

codifica in compl.a uno | CODICE IN COMPLEM.A DUE: 0 000 +0 | 000 +0 1 001 +1 | 001 +1 2 010 +2 | 010 +2 <-- 3 011 +3 | 011 +3 4 100 -3 | 100 -4 5 101 -2 | 101 -3 6 110 -1 | 110 -2 <-- 7 111 -0 | 111 -1

la rappresentaz.e di un num. negativo in complemento a duee’ data dal complemento bit per bit, e poi sommando uno:

+2 = 0 10 -> cod.di -2 = 1 01 +1 = 1 10 = -2 il primo bit e’ il bit del segno, gli altri codificano il numero+3 = 0 11 -> cod.di -3 = 1 00 +1 = 1 01 = -3

168RAPPRESENTAZIONE IN COMPLEMENTO A DUE

rappresento -x in complemento a due con (2 n - x )(*)

ad es: -5 e' rappresentato da -(24-5) = (10000 - 101) = ((10000 -1) +1 -101 ) = (1111 - 101 +1) = 1010 + 1 = 1011un dato negativo in complemento a due sirappresenta con il codice: { [complemento bit per bit del dato] + uno }. -5 codice ( complemento a uno: +5 e' 0101 quindi –5 e' 1010 ) codice in complemento a due: 1010+1 = 1 011_____(*)ricorda codice di –x in complemento a uno (2 n-1)-x

Page 29: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

169RAPPRESENTAZIONE IN COMPLEMENTO A DUEcomplem. a due: -x e’ rappresentato da 2 n -x = 100..00 - x -5 con 4 bit 2 4 -x = 10000 - 0101 = 1011

0 0 000 +0 | 1 111 -1 1 0 001 +1 | 1 110 -2 2 0 010 +2 | 1 101 -3 3 0 011 +3 | 1 100 -4 4 0 100 +4 | 1 011 -5 5 0 101 +5 | 1 010 -6 6 0 110 +6 | 1 001 -7 7 0 111 +7 | 1 000 -8

si noti: la codifica non e’ simmetrica, i num. rappresentabilivanno da -8 a +7, e c'e' una codifica dello zero!

170RAPPRESENTAZIONE IN COMPLEMENTO A DUE

ripetendo ...

caso rappresentazione di numeri negativi incodifica complemento a due : -x e’ rappresentato da 2 n -x

i numeri rappresentabili con n bit vanno da..a :

-2 n-1 ... + 2 n-1 -1 (ad es. se n=4, da -8 a +7)

si noti che l' intervallo NON e' simmetrico!e che c'e' un unico codice per lo zero.

171RAPPRESENTAZIONE IN COMPLEMENTO A DUE

complemento a due :x = +10 codice 001 010,x = -10 codice?-x rappresentato da2 n -x = 2 n -1 -x+1 .. qui n=6, = 1000 000 - 1 –001010 + 1 = 111111 – 001010 + 1 = compl.bit per bit + 1 = 110 110

con 6 bit si rappresentano inumeri da -32 a +31:-2 n-1 = -2 5 = - 32 = 1 00000+2 n-1 -1= 25 -1 = +31 = 0 11111

31 0 11111 -32 1 0000030 0 11110 -31 1 0000129 0 11101 -30 1 0001028 0 11100 -29 1 00011...17 0 10001 -18 1 0111016 0 10000 -17 1 0111115 0 01111 -16 1 10000...10 0 01010 -10 1 10110... 2 0 00010 -3 1 11101 1 0 00001 -2 1 11110 0 0 00000 -1 1 11111

codice a 6 bit, 5 bit dato (numeri da 0 a 31), 1 bit segno:172numeri negativi: codifica in complemento a due

-3 1 1 0 1 ovvero: (2^4-3)+2= 2^4-1 +2 0 0 1 0 che rappresenta -1 -- ------- ... per definizione -1 1 1 1 1------------------------------------------------------------------

-2 1 1 1 0 ovvero (2^4-2)+4 = 2^4+2, +4 0 1 0 0 ignoro il riporto a sinist -- ------- che e’ dato da 2^4 +2 1 0 0 1 0 [[n.b.: due riporti, uno dal e uno nel bit segno]]------------------------------------------------------------------

-3 1 1 0 1 (2^4-3)+(2^4-2)=(2^4-5)+2^4 -2 1 1 1 0 il riporto (2^4) ignorato- -- ------- [[n.b.: due riporti, uno -5 1 1 0 1 1 dal e uno nel bit segno]] anche qui il risult. e' ok

173numeri negativi: codifica in complemento a duequando il risultato NON e’ rappresentabile:

5 0 1 0 1 6 0 1 1 0 [[un solo riporto verso il -- ------- bit segno -> errore di 11 1 0 1 1 traboccamento->overflow]]

-5 1 0 1 1 [[un solo riporto dal bit -6 1 0 1 0 del segno -> errore --- -------- di overflow ]] -11 1 0 1 0 1

174diversi modi di rappresentare numeri con segno:a b c d0 000 = 0 (a = segno, b = cifre dato)0 011 = 3 c = codifica senza segno0 100 = 4 d = codifica in complemento a uno0 101 = 5 e = codifica in comlemento a due0 110 = 6 f = codifica in grandezza con segno0 111 = 7 <-- fino qui(segno +)come noto,poi:

a b c d e f1 000 = 8 -7 -8 -01 001 = 9 -6 -7 -11 010 = 10 -5 -6 -21 011 = 11 -4 -5 -31 100 = 12 -3 -4 -41 101 = 13 -2 -3 -51 110 = 14 -1 -2 -61 111 = 15 -0 -1 -7

codifica complementoa due (colonna e) -5 si scrive: 1011in compl. a uno (col. d) -5 si scrive: 1010in grandezza consegno (colonna f) -5 si scrive: 1101

Page 30: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

175cont. RAPPRESENTAZIONE DI NUMERI CON SEGNO

abbiamo visto le due codifiche piu’ usate per rappresentare inumeri con segno,

codifica in complemento a uno codifica in complemento a due

vediamo ora due codifiche derivate da queste,

“rappresentazione in eccesso di k”

usate nella rappresentazione dei numeri in virgola mobile(tipo: 3,77 E-52 )per la parte dell’esponente...

176ancora 2 modi di rappresent. numeri con segno:0 000 = 0 0 -7 -8 colonna:0 001 = 1 1 -6 -7 a= segno,0 010 = 2 2 -5 -6 b= bit per il dato,0 011 = 3 3 -4 -5 c = decimale,0 100 = 4 4 -3 -4 d = complemento a due0 101 = 5 5 -2 -3 e = rappresentazione0 110 = 6 6 -1 -2 in eccesso di 2^(N-1)0 111 = 7 7 -0 -1 con complemento a uno1 000 = 8 -8 +0 +01 001 = 9 -7 +1 +1 f = rappresentazione1 010 = 10 -6 +2 +2 in eccesso di 2^(N-1)1 011 = 11 -5 +3 +3 con complemento a due1 100 = 12 -4 +4 +4 num.positivi segno 11 101 = 13 -3 +5 +5 nota che i numeri1 110 = 14 -2 +6 +6 negativi hanno il1 111 = 15 -1 +7 +7 bit del segno zeroa b c d e f

177rappresentaz. di numeri con segno con eccesso di kcodifica di numeri positivi e negativi con eccesso di 2n-1

ogni dato x (pos.o neg) e’ codificato con: 2(n-1) + x(con n = numero bit della rappresentaz.)ad es. per codificare 5 con n = 4 bit abbiamo: 5 -> 2(n-1) + 5 = 23 + 5 = 1000 + 101 = 1101

per rappresentare un numero negativo? -> uso l’aritmeticacon complemento; devo decidere quale rappresentazioneuso per la sottrazione, cioe’ quale codice per il -x; es:-5 -> 23 - 5 = 1000 + [codice di -5] ->

ora, se rappresento -5 in complemento a uno allora: 2^3 + (-5) = 1000+1010 = 0010 (colonna d)(ignoro il riporto dal rango del segno!)

178codifica num.negativi con eccesso di kcon n bit rappresento x con 2(n-1) + x

con 4 bit ho i codici di +5 e di –5:

5 -> 2(n-1) + 5 = 23 + 5 = 1000 + 101 = 1101

-5 -> 23 - 5 = 1000 + codice di -5 ->

-5 codice con eccesso di 23, complem.a uno:

2^3 + (-5)= 1000 + 1010 = 0010 (colonna d)

-5 codice eccesso di 23, in complem.a due:

2^3 + (-5)= 1000 + 1011 = 0011 (colonna e)

il primo bit e'sempre il segno del dato; con la codificain eccesso di k il segno meno corrisp. al bit segno = 0

179

riassumiamo larappresentazione dinumeri con segno -

le 4 codifiche,caso di codice a 4 bit

(1 bit per segno, 4 bit per dato)

Riassunto 4 codifiche numeri interi con segno 1800 000 = 0 0 0 -7 -8 c= codifica senza0 001 = 1 1 1 -6 -7 segno0 010 = 2 2 2 -5 -6 d= codice in complem0 011 = 3 3 3 -4 -5 a uno (due zeri!)0 100 = 4 4 4 -3 -4 la piu' usata:0 101 = 5 5 5 -2 -3 e= codifica in com-0 110 = 6 6 6 -1 -2 plemento a due0 111 = 7 7 7 -0 -1 (non simmetrica)

1 000 = 8 -7 -8 +0 +01 001 = 9 -6 -7 +1 +1 f= rappresentazione1 010 = 10 -5 -6 +2 +2 in eccesso di 2N-11 011 = 11 -4 -5 +3 +3 con compl. a uno1 100 = 12 -3 -4 +4 +4 g= rappresentazione1 101 = 13 -2 -3 +5 +5 in eccesso di 2N-1,1 110 = 14 -1 -2 +6 +6 con complem.a due1 111 = 15 -0 -1 +7 +7 codifiche f,g hanno ia b c d e f g num.negat.con segno 0

Page 31: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

181esercizi aritmetica con segno: 1) 3-31) esercizio: calcolare la somma :

+3 -3

in due versioni, complemento a uno complemento a due

usare una codifica a 4 bit,

182

in complem. a uno: complem.bit per bit

+3 -> 0 0 1 1 0 0 1 1-3 -> 1 1 0 0 1 1 0 0 ----------ottengo il codice di -0 1 1 1 1(ricorda: il riporto da sinistra si somma a destra )

complemento a due: 3 0 0 1 1compl.bit per bit e poi sommo 1 -3 1 1 0 1 (ignoro i due riporti --------------- nel/dal bit del segno) 1 0 0 0 0

esercizi aritmetica con segno: 1) 3-3, soluzione:

1832) aritmetica con segno, compl. a 1,esercizi: 6-4, 5-6, -2-3

es.2) calcolare in complemento a uno con codice a 4 bit:

6 -4 = 0 110 + 1 011 =

5 - 6 = 0 101 + 1 001 =

-2 -3 = 1 101 + 1 100 =

1842) aritmetica con segno, compl. a 1,esercizi: 6-4, 5-6, -2-3calcolare 6 - 4 (complemento a uno, codice a 4 bit) :codice +6 0 110,codice +4 0 100, codice di -4 1 011, quindi: +6 0 110somma : -4 1 011 ----- 10 001 risultato - ma vi sonodue riporti al/dal segno, si somma ilriporto: 0 001 +1 ----- 0 010ottengo il codice di +2

1852) aritmetica con segno, compl. a 1,esercizi: 6-4, 5-6, -2-3calcolare 5 - 6 (complemento a uno, codice a 4 bit):

codice di +5 0 101,codice di +6 0 110, di -6 1 001,quindi

+5 0 101somma : -6 1 001 ----- -1 1 110

nessun riporto al/dal segno, hodirettamente il risultato meno uno

1862) aritmetica con segno, compl. a 1,esercizi: 6-4, 5-6, -2-3calcolare -2 -3 (complemento a uno, codice a 4 bit)

codice di +2 0 010, di -2 1 101codice di +3 0 011, di -3 1 100, quindi

-2 1 101somma : -3 1 100 ----- 11 001

due riporti al/dal segno, sommo ilriporto: 1 001 +1 ----- 1 010 risultato codice di -5

Page 32: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

1873) aritmetica con segno, compl. a 2, esercizi: 6-4, 5-6, -2-33) stessi esercizi, ma in complemento a due;

6 -4 5 - 6 -2 -3

ricorda per avere il codice di -3 in complemento a 2 si fa:

parto dal codice di +3, 0 011,il complemento a uno e’ 1 100, a questo poi sommo uno,e ottengo 1 101che e' il codice di -3 in complemento a due;(vale anche per lo zero: per avere il codice di -0 si fa: +0 = 0 000, complemento a 1 e' 1 111, 1111 piu' 1 -> ottengo 0 000 )

1883) aritmetica con segno, compl. a 2, esercizi: 6-4, 5-6, -2-3 6 -4codice di +6 0 110codice di +4 0 100, -4: 1011 + 1 = 1 100

somma: +6 0 110 -4 1 100 ----- +2 10 010

risultato 0 010

(il doppio riporto in e dal bit del segnoe' ignorato)

1893) aritmetica con segno, compl. a 2, esercizi: 6-4, 5-6, -2-3

5 - 6codice di 5 0 101codice +6 0 110,di -6: 1 001+1=1010somma: +5 0 101 -6 1 010 --------- -1 1 111

(nota:1=0001,complem.a 1 di -1 e' 1110,poi+1, ottengo 1111)

-2 -3codice di 2 0 010,-2: 1101+1= 1 110codice di 3 0 011,-3: 1100+1= 1 101somma: -2 1 110 -3 1 101 --------- -5 11 011ignoro doppio riporto1, (5=0101, -5=1010+1=1011=risultato sopra)

1904) aritmetica con segno, codici a 5 bit di -2, -6, -7, -13

4) esercizio: calcolare le codifiche dei numeri:

-2, -7, -9, -13

in complemento a due,

con rappresentazione di 5 bit(1 bit segno, 4 bit dato)

1914) aritmetica con segno, codici a 5 bit di -2, -6, -7, -13

4) esercizio: calcolare le codifiche dei numeri: -2, -7, -9, -13 in complemento a due,con rappresentazione di 5 bit (1 bit segno, 4 bit dato)

codice di +2 = 0 0010 codice di -2 = 1 1101 + 1 = 1 1110

codice di +7 = 0 0111, codice di -7 = 1 1000 + 1 = 1 1001

codice di +9 = 0 1001, codice di -9 da 1 0110 + 1 = 1 0111,

codice di +13 = 0 1101, codice di -13 = 1 0010 + 1 = 1 0011,

192 FINE CODIFICHE NUMERI NEGATIVI

FINE CODIFICHE NUMERI NEGATIVI

Page 33: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

193floating point = “ float, real, …(*) ”

numeri in virgola mobile -

numeri molto ... grandi numeri molto ... piccoli esempio: velocita' della luce: 299 792 km/sec ("grande") massa elettrone: 9,109 381 × 10 -31 kilo ("piccolo")----------------------------------------------------------------------------------------------------------------------------

(*) corrisponde ad un tipo standard di molti linguaggi diprogrammazione

194codifica in virgola mobileRAPPRESENTAZIONE DI NUMERI MOLTO

PICCOLI E MOLTO GRANDI ---IN VIRGOLA MOBILE (FLOATING POINT)

Possiamo scrivere un dato con parte intera e fratta in moltimodi diversi:3,14159265 = 0,314159265 * 101 = 3,14159265 * 100 = 314159265 * 10-8 = 0,0000314159265 * 105 = ( 314159265, -8 ) ecc = 0,314159265 * E+1 <<== = 3,14159265 * E+0 <<==due forme normalizzate notazione in virgola mobile

195codifica in virgola mobile 0,314159265 E+1 = forma normalizzata in virgola mobile

le varie parti sono codificate separatamente : ( e' implicita la base dell'esponente , qui 10 )segno/cifre /segno esponente/cifre espon. + ,314159265 + 1in binario: + ,01010000011... + 1ovvero + ,10100000110 + 0

(ricorda: 0,001 * 22 = 0,01 * 21 = 0,1 * 20 = 1 * 2 (-1) = 10 * 2 (-2) = ...0,314E+1-> 314 = cifre = mantissa E+1 = esponente = caratteristica

196codifica in virgola mobile

+ 0 , 3141592 E + 01

= forma normalizzata in virgola mobile

Sono in ogni caso presenti 4 compnenti :

il segno del dato +

le cifre del dato (mantissa) = 3141592 = precisione del dato, (nota: la posizione della virgola decimale e' a sinistra della prima cifra non nulla del dato)

il segno dell'esponente +

le cifre dell'esponente (caratteristica) = 01 = ordine di grandezza del dato.

197precisione nella codifica in virgola mobile + 0,31415926 E + 01

la virgola (decimale o binaria) si assume generalmente asinistra della prima cifra del dato. ...da ricordare che:

scrittura italiana: 0,314E+1 dato in “virgola mobile”

scrittura anglosassone: 0.314E+1 “floating point” datum"

198precisione nella codifica in virgola mobileIl numero delle cifre del dato (mantissa) determina laprecisione della rappresentazione:un dato con precisione di due cifre: il costo dell'opera sara' 17 milioni di euroun dato con precisione di 8 cifre: il valore di π e' 3,1415926

definizione: precisione il numero x piu' di una codifica = piccolo tale che in virgola mobile 1.0 + x <> 1.0

es. alcuni dati con precisione di 4 cifre:0,005764 chilometri 8012 metri 172,7 centimetri7542000 quintali 3,141 unita' 1,000 litri

Page 34: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

199codifica in virgola mobile precisione il numero x piu' di una codifica = piccolo tale che in virgola mobile 1,0 + x <> 1,0

ad es. nel caso sopra, assumiamo la codifica con 7 cifre,

allora la precisione e’ data da

+0, 0 0 0 0 0 0 1 E+00 = 1,0E-7(nota le posizioni 1 2 3 4 5 6 7 )

proviamo a sommare 1,0e 1,0E-7 come sommo 1,0 + 1,0 E-7 ?

200somma di due numeri in floating point

premessa: per sommare due numeri di tipo:

n * 10 k + m * 10 j es. 0,23 E 3 + 0,55 E 6

devo prima portare i due esponenti allo stesso valore,scelgo quello piu' grande (*) : ad es. se k>j allora n*10 k +(m*10 (-k+j) )*10 k = (n + (m*10 (-k+j) ) * 10 k

0,23E 3 + 0,55E 6 = 0,23*(10-3)*E6 + 0,55E 6

= 0,00023E6 + 0,55 E6

metto il fattore E6 = 10 alla 6 in comune: ( 0,00023 + 0,55 ) E6 = ( 0,55023) E6 = 0,55023 E6

(*)ricorda: 0,23E 3 = 0,023E 4 = 0,00023E 6 = 2,3E 2 = 230 E 0

201somma di due numeri in floating pointora sappiamo come sommare due dati a 7 cifre:

1,000000 + 1,000000 E-7

1) porto i due esponenti allo stesso valore, scelgo quello piu' grande:

1,000000 = 1,000000E+00

1,000000 E-7 = +0,000 000 1000000 E+00

2) poi sommo:

202codifica in virgola mobileporto i due esponenti allo stesso valore, quello piu' grande:

1,000000 = 1,000000E+00 1,000000 E-7 = +0,000 000 100000 E+00 1,000 000 0 E+00 +0,000 000 1000 000 E+00 -------- ---------------- 0,100 000 1000 000 E+00

devo avere il formato fisso a 7 cifre: tronco le ultime cifre,rimane 0,100 000 1 :

il valore ottenuto 0,1000001E+00 e' diverso da 1,0E+00,quindi vale appunto che 1.0 + x <> 1.0

==>> vediamo ora con un x piu' piccolo della precisione

203codifica in virgola mobileQuanto vale (1+x), se x e' piu' piccolo della precisione?

1 e' codificato con: 0,100 000 0 E+01

sommo un x < 1.0E-7, ad es. 4.0E-8: 4,000 000 E-08

per sommare, devo avere esponenti uguali, uso il piu'grande:

0,100 000 0 E+01 +0,000 000 04 E+01 (e' 4,0E-08 spostato di 8 posiz. ----------------- per avere lo stesso esponente) 0,100 000 04 E+01

204codifica in virgola mobilecalcolo (1+x), con x e' piu' piccolo della precisione: 1 e' codificato con: 0,100 000 0 E+01un x < 1.0E-7, ad es. 4.0E-8: 4,000 000 E-08

per sommare, devo avere esponenti uguali, uso il piu'grande:

0,100 000 0 E+01 tutti i dati con 7 cifre; +0,000 000 04 E+01 (e' 4,0E-08 spostato di 8 posiz. ----------------- per avere lo stesso esponente) 0,100 000 04 E+01

risultato con otto cifre per il dato - ma il formato e' fisso: il risultato deve avere 7 cifre!l'ultima cifra viene troncata (arrotondata) e si ottiene: 0,100 000 0 E+01e quindi ottengo il risultato uguale al primo addendo !!

Page 35: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

205codifica in virgola mobile, - limitiIn virgola mobile posso rappresentare numeri molto piccolio molto grandi utilizzando sempre lo stesso numero di cifrein un formato fisso; vediamo qui un esempio di formato ei limiti che ne derivano: in tutto 6 cifre, quattro per il dato, 2per esponente, piu' i due segni (dato,esponente) :

27,53 -> 0,2753 E+02 0,000 000 000 07986 -> 0,7986 E-10 piccolo 12340000 0000 0000 -> 0,1234 E+16 grande

codifico ora i numeri con il formato detto;i tre dati di sopra codificati diventano :

| + | + | 02 | 2753 | primo dato 27,53| + | - | 10 | 7986 | 2.o dato 0,7986 E-10| + | + | 16 | 1234 | 3.o dato 0,1234E+16

20627,53 0,2753 E+020,000 000 000 07986 0,7986 E-1012340000 0000 0000 0,1234 E+164 cifre per il dato,2 cifre per l'esponente| + | + | 02 | 2753 | primo dato 27,53| + | - | 10 | 7986 | 2.o dato 0,7986E-10| + | + | 16 | 1234 | 3.o dato 0,1234E+16

il numero piu' grande rappresentabile con tale formato:| + | + | 99 | 9999 | = 0,9999 * 10^99

il numero piu' piccolo rappresentabile con tale formato,con 4 cifre, normalizzato (prima cifra a sin. e' non zero):| + | - | 99 | 1000 | = 0,1000 * 10^(-99)il piu' piccolo con 1 cifra sola (non normalizzato) :| + | - | 99 | 0001 | = 0,0001 * 10^(-99)

= 0,1 * 10^(-102)

limiti codifica in virgola mobile

207codifica in virgola mobilenota - la rappresentazione di un numero in floating point

definisce come si codificano * la parte delle cifre (mantissa)e * la parte che da' l'ordine di grandezza (caratteristica)

123,456 si scrivera': 0,123456 E+3(convenzione: la prima cifra dopo la virgola decimale e' nonnulla, la parte intera e' nulla; usata negli es.seguenti)

oppure (convenzione standard corrente, piu' usata) 1,23456 E+3la virgola sta dopo la prima cifra non nulla(che in binario e' sempre 1, e si assume implicitamente senzamemorizzarla)

208codifica in virgola mobile - codifica e limitiseguono esempi in binario su un ipotetico formato a 8 bit:S Z EE DDDDsegno dato segno espon espon dato

1) Per rappresentare il dato 5,0 avremo in binario :5 = 101,0 * 2^0 (ora normalizzo ) = 0,1010 * 2 ^ 3 =>0 0 11 1010S Z EE DDDD

quindi 00111010 e’ la codifica di 0,101 * 2 ^ 3

2) per rappresentare il dato 0,75 avremo in binario:0,75 = 0,5 + 0,25 = 1/2+1/4 = 0,11 con esponente 0,quindi 0 0 00 1100quindi 00001100 rappresenta 0,11 * 2 ^ 0

209codifica in virgola mobile es 0,125contin. virgola mobile con codifica a 8bit

SZEEDDDD (S segno dato, Z segno esponente, EE esponente, DDDD cifre dato)

3) dato 0,125 = 1/8 = 0,001 = 0,001*2^0 ={ S=0, Z=0, EE=00, DDD=001 } poi normalizzo,cioe’ virgola binaria a sinistra della 1.a cifra del dato:= 0,1*2^(-2)(*) codifico l'esponente negativo ad es.incompl. a uno, quindi (z=meno,EE=2) -2 diventa: -2= 111-010 =101, infine il tutto 0,1000*2^(-2) diventa:

0,125 = S E EE DDDD= 0 1 01 1000= 01011000_____________(*) nota: di seguito uso a^b oppure ab per indicare a alla b

210codifica in virgola mobile es con soli 8 bit ...cont. codifica in virgola mobile con 8 bit

S segno, Z segno espon,EE espon., DDDD dato abbiamo visto che 0011 1010 rappresenta 5,0 e che 0,125=1/8=0,0012 si scrive 01011000,

vediamo i numeri piu’piccolo e piu’grande:

il piu'grande: esponente posit.massimo e'3:

0011 1111 = 0,1111*23 = 8 (circa)

il piu'piccolo: espon.piu'piccolo e'-3:

0100 0001 = 0,0001*2-3 = 1,0*2-7 = 1/128

Page 36: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

211

vedremo tra pocolo standard di codifica per i due tipi piu' usati,

FLOATING (32 bit) e DOUBLE (64 bit)

e i limiti che derivano da tale formato

212codifica in virgola mobile es con soli 8 bit ...i dati con segno meno sono rappresentaticomplementando tutto, quindi ad es. gli stessi di prima:

+5,0 = 0011 1010, -5,0 = 1100 0101

0,75 = 0000 1100, -0,75 = 1111 0011

0,125 = 0101 1000, -0,125 = 1010 0111

213nota sulla interpretazione di un datoquando il calcolatore preleva un dato dalla memoriail dato sara' poi interpretato a seconda dello stato in cuisi trova l'unita' centrale: senza questa informazionela codifica di dato qualunque, ad es.: 1011 1111non dice nulla su come deve essere interpretato:per interpretare un insieme di n bit correttamentedobbiamo sapere a priori di che tipo di dato si tratta!!

ad es. il dato qui riportato, 1011 1111,avra' un valore ben diverso a seconda se lo interpreto comeil codice di un carattere, oppure come codice d intero consegno oppure come codice di un numero in floating point,oppure ancora come il codice di un'istruzione macchina!!

214

il formato determina

* la precisione dei dati

* i limiti di rappresentazione dei dati

vediamo un esempio semplificato (tutto in base 10)

215codifica in virgola mobile: precisione/estensionedate n cifre [es. 10 cifre decimali] per rappresentare undato in virgola mobile dobbiamo decidere il formato cioe’dividere le cifre disponibili per le codifiche dei vari pezzi ...

il formato determina l'insieme dei numeri rappresentabili:

* sia per l' estensione dell'intervallo (ordine di grandezza, num. piu' piccolo/ num. piu' grande)

* sia per la precisione (cifre significative)

nota: se uso piu' cifre per l'esponente -> posso rappresentare numeri piu' grandi / piccoli, -> ma - diminuisce la precisione (restano meno cifre per il dato)

e viceversa: uso piu’ cifre per dato -> meno cifre per esp.

216codifica in virgola mobile: base 1000Possiamo aumentare i limiti di grandezza dei numerirappresentabili a pari numero cifre della codificacioe' senza aumentare il num.di cifre del codice ... es:codice con 6 cifre decimali, 2 espon, 4 dato, tutto in base 10

0,50 = 0,50*10^00 => + +00 5000 3,14 = 3,14*10^00=0,314*10^1 => + +01 3141 0,00123=,123*10^-2 => + -02 1230

il numero piu' piccolo + -99 1000 => 0,1000E-99il numero piu' grande + +99 9999 => 0,9999E+99NOTA: qui l' esponente e' con base 10 MA se cambio base ?

Page 37: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

217codifica in virgola mobile: base 1000riprendiamo il codice detto, con 6 cifre decimali di cui 2 per l' espon, 4 per le cifre del dato, tutto in base 10, .. MA:cambio base dell’esponente: invece di 10 e’ 1000 allora:0,50=0,50 *1000^0 => + +00 5000

il numero piu' piccolo e' ora: + -99 1000 = 0,1000*(1000^(-99)) == 0,1000*((1000)^(-99)) =0,1000*10^(-297)= 0,1000 E -297

il numero piu' grande e' ora: + +99 9999 = 0,9999*(1000^(-99)) == 0,9999*((10^3)^(99)) => 0,9999 E+297

aumentano i limiti di ordine di grandezza !!

218codifica in virgola mobile: base 1000codice con 6 cifre decimali, 2 espon, 4 dato, tutto in base 10cambio base dell’esponente: invece di 10 e’ 1000 allora:

0,50=0,50 *1000^0, codice: + +00 5000il numero piu' piccolo + -99 1000 = 0,1000 E-297il numero piu' grande + +99 9999 = 0,9999 E+297

aumentano i limiti di ordine di grandezza... MA ->perdo cifre, cioe' precisione:3,14 =3,14 *1000^0 =se cambio espon.di uno la virgola si sposta diTRE posizioni (base esponente e' 1000): = 0,00314*1000^1 => + +01 00310,00123 = ,00123*1000^0 => + +00 0012

219codifica in virgola mobile: base 10 vs. base 1000codifica con 6 cifre decimali, 2 espon, 4 dato, tutto in base 10,base dell’esponente 10:3,14 = 3,14*10^00=0,314*10^1=> + +01 3141

se la base dell’esponente invece di 10 e’ 1000 allora abbiamo:3,14=3,14*1000^0=,00314*1000^1=>+ +01 0031

quindi:se aumento o diminuisco di 1 l’ esponente con base 1000devo spostare le cifre del dato di 3 posizioni: avro’ spesso zeri dopo la virgola decimale normalizzata ->meno cifre utilizzate -> perdo in precisione

in media perdo 1,5 cifre

220ancora un ese. con mantissa a 3 cifre, esponente a base 10:93,93 *10^0 =0,9393*10^2 => + +02 9399,393 *10^0 =0,9393*10^1 => + +01 9390,9393 *10^0 =0,9393*10^0 => + +00 9390,09393*10^0 =0,9393*10^-1 => + -01 939,009393*10^0 =0,9393*10^-2 => + -02 939,0009393*10^0=0,9393*10^-3 => + -03 939se la base dell’esponente invece di 10 e’ 1000 allora abbiamo:93,93 *1000^0 =,09393*1000^1 => + +01 0949,393 *1000^0 =,009393*1000^1=> + +01 0090,9393 *1000^0 =,9393*1000^0 => + +00 9390,09393*1000^0 =,09393*1000^0 => + +00 094,009393*1000^0 =,009393*1000^0=> + +00 009,0009393*1000^0=,9393*1000^-1 => + -01 939

codifica in virgola mobile

221

se la base dell’esponente e’ 1000 (invece di 10) alloraabbiamo (ripeto):93,93 *1000^0 =,09393*1000^1 => + +01 0949,393 *1000^0 =,009393*1000^1=> + +01 0090,9393 *1000^0 =,9393*1000^0 => + +00 9390,09393*1000^0 =,09393*1000^0 => + +00 094,009393*1000^0 =,009393*1000^0=> + +00 009,0009393*1000^0=,9393*1000^-1 => + -01 939

perdo cifre significative (in media perdo 1,5 cifre=meta’cifre della base) ma guadagno in limiti di grandezza:1000^(-99)-- 1000^99 ( invece di 10^(-99) -- 10^99 )ovvero 10^(-99*3)-- 1000^(99*3)

codifica in virgola mobile 222

ancora ese. con mantissa a 3 cifre, esponente a base 10:45678 = 0,45678*10^+5 => + +05 457 0,00712 = 0,712 *10^-2 => + -02 7120,5555 = 0,5555 *10^-0 => + +00 555

se la base dell’esponente invece di 10 e’ 1000 allora abbiamo:45678,0 = 0,045678*1000^2 => + +02 045 <<==0,00712 = 0,00712 *1000^0 => + +00 007 <<==0,5555 = 0,5555 *1000^0 => + +00 555 <<==

perdo cifre significative, qui in media perdo 1,5 cifre (meta’cifre della base) guadagno in limiti di grandezza: ho 1000^(-99)-- 1000^99 invece di 10^(-99) -- 10^99.

codifica in virgola mobile

Page 38: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

223esercizio floating point: 7,7E0 in binario ?

esercizio floating point:

dato il formato:

12 bit divisi come segue: 1 bit segno del dato 1 bit segno dell'esponente (codifica con eccesso di 2^3) 3 bit valore esponente (e in complemento a uno) 7 bit valore del dato - ma attenz.: vedi nota qui sotto

dove il 1.o bit del dato e' sempre uno, e non e' memorizzato(ovvero se il dato - parte mantissa - vale 1011 1111, virgolabinaria posta davanti la prima cifra, il dato e' memorizzatonella parte cifre come 011 1111 (1.o bit 1 implicito)

trovare la rappresentazione di 7,7 E0

224esercizio floating point continuaesercizio: convertire 7,7E0 in binario, in formato da 12 bit: 1 bit segno dato; cifre del dato: 7 bit esponente: 1 bit segno, 3 bit valore (eccesso 2^3, compl. a 1); devo convertire le cifre del dato e l'esponente; qui l'esponente e' zero, quindi devo convertire solo le cifre: convertire 7,7 da base 10 a base 2: devo convertire separatamente la parte intera, semplice: 7-> 111, (sono i tre bit iniziali delle cifre del dato) e separatamente la parte fratta: solo per quattro bit, perche'con mantissa a 7 bit, 3 bit gia'dati, devo trovare ancora 4 bit 0,7 = 0,abcd (binario) - moltiplicando per due ripetutamente: 1) 0,7*2->1,4; 2)0,4*2->0,8; 3)0,8*2->1,6; 4) 0,6*2->1,2; 5) 0,2*2->0,4; quindi per la parte fratta le cifre binarie sono 0,10110 (e' un 0,7 approssimato con 5 bit, 0,5+0,125+0,0625=0, 6875)il dato in binario e' 111,10110 normalizzo: 1,1110110 * 2^2

225esercizio floating point: 7,7E0 in binario, continua1) convertire 7,7E+0 da base 10 a base 2: (1 bit segno dato; 7 bit cifre del dato; esponente: 1 bit segno, 3 bit valore (eccesso di 2^3, compl.a 1); parte intera 7-> 111, poi la parte fratta - con mantissa a 7 bit, devo trovare ancora 4 bit: 1) 0,7*2->1,4; 2)0,4*2->0,8; 3)0,8*2->1,6; 4) 0,6*2->1,2; 5) 0,2*2->0,4; quindi per la parte fratta le cifre binarie sono 0,10110 (e' un 0,7 approssimato con 5 bit, 0,5+0,125+0,0625=0, 6875)ora il dato in binario e' 111,10110; normalizzo: 1,1110110 * 2^2quindi: parte cifre 1,1110110, -> sono 8 bit ?! ... MA:il primo bit poi sara' implicito, quindi restano 7 bit da memorizzarela parte esponente 2 cioe' 010, con eccesso di 1000: 1000+010=1010 metto insieme e ho:

0 1 010 1110110 = 6,875 E+0

la precisione e' veramente scarsa... visto le poche cifre per il dato ;-)

226somma in virgola mobilesomma con numeri in virgola mobile:

0,xxx*10^E1 + 0,yyy*10^E2 =

1) se E1 = E2 allora le due mantisse si possono sommare:

(0,xxx + 0,yyy) *10^E1

es.:

0,314 E + 1 + 0,250E + 1 = ( 0,314 + 0,250 ) * 10 ^ 1 = = 0,564 * 10^1 = = 0,564 E + 1

227somma in virgola mobilePer sommare due numeri in virgola mobile, se E1 <> E2 allora devo rendere i due esponenti uguali:porto l'esponente piu' piccolo al valore del piu' grande,es: formato con 3 cifre per dato, 1 per esponente:

0,222E+1 + 0,333E-1 -> e1<>e2 per cui non posso sommare direttamente ->devo aggiustare uno dei due esponenti, cambio l'esponentepiu' piccolo e lo metto al valore del piu' grande, scalandodi uguale misura la mantissa:0,222E+1 + 0,00333E+1 = 0,222 * 10 + 0,00333 * 10= (0,222 + 0,00333) * 10 = 0,22533 E+1 <<== RIS.siccome ho solo 3 cifre disponibili -> si troncano le cifre= 0,225 E +1 <== inevitabile errore di troncamento !!!

228somma in virgola mobile - normalizzare risultatoattenz: se la somma delle mantisse fornisce un numeromaggiore di uno allora si deve normalizzare il risultato:

0,966 E+1 + 0,555 E+0 = 0,966 E+1 + 0,0555E+1 = 0,966 * 10 + 0,0555 * 10 == ( 0,966 + 0,0555 )* 10 = (1, 0215) * 10= 1,0215 E+1 = 0,10215 E+2 [esponente normalizzato]= 0,102E+2 forma normalizzata solo 3 cifre -> abbiamo di nuovo un errore troncamento !

ancora un es.: 0,997E+1 + 0,00423E+1 = 0,997 * 10 + 0,00423 * 10 = (0,997 + 0,00423) * 10 = 1,00123E+1 = 0,100123E+2 = 0,100E+2

Page 39: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

229somma in virgola mobilePer sommare due numeri in virgola mobile:se e1 <> e2 allora devo rendere i due esponenti uguali: abbiamo visto la somma fatta portando l'esponente piu' piccolo al valore del piu' grande ...

e se invece porto l’ esponente piu’ grandeal valore del piu’ piccolo?

-> 0,997E+1 + 0,423E-1 = 99,7E-1 + 0,423E-1

non cambia molto ... ma ottengo un numero in formanon normalizzata, devo in ogni caso normalizzare => allafine ho lo stesso risultato ...... non si usa

230codifica in virgola mobile : overflowpuo’ succedere che il risultato della somma non sia rappresentabile:dati: 0,9983E+99 e 0,7044E+98, rappresentati ades. formato decimale , 2 cifre per esponente, 4 per dato:+99 ,9983 = 99 ,9983+98 ,7044 = 99 ,07044---------------------- ----------------- sommiamo:

99 1,06874 -> normalizzo -100 ,106874 -> l’esponente e’ > 99

non posso rappresentare l'esponente 100 ->il risultato esce dai limiti della codifica !

==> errore di traboccamento ==> overflow

231codifica in virgola mobile: overflowse l'esponente del risultato di un’operazione aritmeticanon e' rappresentabile allora c’e’ un errore di “overflow”:// caso di formato decimale, con 2 cifre per esponente e 4 per dato: +99 9983 = 99 ,9983 +98 7044 = 99 ,07044 ------------ ---------- 99 1,06874 -> normalizzo - 100 ,106874 -> esponente e’ >99non posso rappresentare l'esponente 100 ! //nei calcolatori c'e' spesso un meccanismo dicontrollo automatico su questo errore:se c’e’un "floating point overflow" allora il calcolatoreinterrompe (HW!) l' esecuzione del programma e segnalaquesto fatto in qualche modo.

232formato / i floating point

in molti modelli di calcolatori sono state usati per la codificafloating diversi formati e basi diverse dalla base due:

ad esempio con base 16, (e quindi - come vedremo -l'intervallo di numeri rappresentabili era maggiore)

dal 1985 si usa lo standard IEEE 754(che vedremo tra poco)che usa come base per l'esponente il valore 2

233standard IEEE FORMATI STANDARD IN VIRGOLA MOBILE

(IEEE standard 754 Binary Floating Point Arith del 1985)

s 1,ddd...ddd E z ee..ee =

(segno dato s) * [mantissa 1,dddddd] * parte Esponente[= segno z esponente * caratteristica = cifre esponente eeee ]

formato a 32 bit, mantissa dd...dd a 23 bit, esp. zee...ee a 8 bit

formato a 64 bit,

formato a 80 bit,

234standard IEEE 754 del 1985 formato a 32 bit (single precision) limiti: max 3.4 E+38 min 1.5 E-45 non normalizzato positivo min 1.2 E-38 normalizzato positivomantissa: 23 bit con sottinteso un uno davanti alla virgolabinaria, quindi sono 24 bit, precisione di 7,4 cifre decimaliil dato e' sempre espresso in modo che la mantissa e' compresatra 1.000..00 e 1.111..11 (dato normalizzato)esponente binario codice a 8 bit da -126 a +127, con base 2 erappresentazione in eccesso di 127 in complem. a due;

formato bit (virgola a dest.della 1.a cifra D)S ZEEEEEEE D,DDD DDDD DDDD DDDD DDDD DDDD

D non e' memorizzato, e' implicito

Page 40: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

235

es.il dato 42.6875 si codifica come segue:

42.6875 = 101010.1011 = 1.010101011 x 2 5

che per l'esponente da': 127+5 =132=128+4= 10000100 (8 bit)e per la mantissa 1,01010101100000000000000 (23 bit)e per il segno 0 (1 bit)

totale: 0 10000100 01010101100000000000000

esempio di codifica float 236limite float - numero piu' grandeNota: il numero piu' grande per un numero in virgola mobile a 32 bit in formato standard e'esponente (8 bit, base 2): 127 = 01111111 (*)

mantissa:(2-2^(-23))=1.1111111111111111111111quindi il valore (massimo) rappresentato e':max = (2-2^(-23))*2^(127) = 3.403*10^38

ed il valore minimo (piu' piccolo) ?dato normalizzato, la mantissa piu' piccola e' 1.0esponente piu' piccolo (base 2) e' -127 = 1000000___________________(*) 63=11 1111,64=10 00000,127=111 1111, 128=1000 0000

237standard IEEEformato a 64 bit (double precision) circa 15 cifre decimali e intervallo da 10^-300 a 10^300,max 1.7 E+308min 5.0 E-324 non normalizzato posit.min 2.3 E-308 normalizzato posit.

esponente binario 11 bit da -1022 a +1023 (base 2)mantissa: 52+1 (bit implicito) bit

cioe' la precisione e' di 15,5 cifre decimaliformato bit:

S EEE EEE EEE EE DDDDD DDDDD DDDDD DDDDDDDDDD DDDDD DDDDD DDDDD DDDDD DDDDD DD

238standard IEEEformato a 80 bit (extended)

max 1.1 E+4932min 1.9 E-4951 non normalizzato posit.min 1.7 E-4932 normalizzato posit.

precisione: 19,5 cifreesponente binario 15 bit da -16382 a 16383,mantissa: 63+1 bit (19,5 cifre decimali)

formato in binario: S EEEEE EEEEE EEEEE DDD DD DDD DD DDD DD DDD DD DDD DD DDD DD DDD DD DDD DD DDD DD DDD DD DDD DD DDD DD DDD

239standard IEEEquadrupla precisione a 128 bit:

15 bit per l'esponente

111 bit per la mantissa(normalizzata con 1 davanti la virgola binaria)

massimo esponente 32767 (con base 2, circa 10000 base 10)

240altre rappresentazioni (non piu'usate)

osservazione: gli stessi bit possono essere divisi in moltimodi, e prima dello standard IEEE 754 erano in uso ad es.

l' IBM 370 usava la codifica:esponente 7 bit, base 16;mantissa 24 bit (7,5 cifre circa)quindi il massimo rappresentabilemax = 16^63 * 0,FFFFFF = 0,9999 * E+75min = 16^(-64) * 0,000001 = 0,1 * E-79

fino agli anni 80 erano in uso molte codifiche diverse, ognicasa costruttrice usava una sua codifica(la Digital usava una sua (su VAX),la Control Data usava una ancora diversa a 60 bit, ecc)

Page 41: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

241codici floating speciali: codici per infinito / non definitoNota 2) :lo standard prevede dei codici particolari per indicarenumeri "molto grandi" o "praticamente infiniti", usati per irisultati di operazioni del tipo: 7,5 / 0.0

e altri codici per indicare numeri "non definiti" usati per ilrisultato di un'espress. aritm. del tipo: infinito * zero zero / zero

viene poi definita un' aritmetica per questi codici, del tipo: infinito * x = infinito, non_definito + x = non_definito ...

242unita' aritmetica per interi / per virgola mobileNota 3): Le operazioni aritmetiche in virgola mobile sonopiu' complesse delle operazioni analoghe su interi, e larealizzazione hw e' piu' complessa.Le istruzioni aritm. in virgola mobile sono realizzate (sucalcolatori piccoli) con sequenze di istruzioni apposite(sottoprogrammi);

L' aritmetica in virgola mobile e' realizzata circuitalmentein un'unita' di calcolo "floating-point unit", che puo'essereseparata dall'unita' centrale, cosi’ erano (anni 80) l' INTEL80286 + f.p.u. 80287 o MOTOROLA 68020 + f.p.u. 68882)oppure fa parte dell'unita' centrale, che diventa un po' piu'grande; cosi' era per i calcolatori "grandi" (mainframe, esVAX9000, IBM 370-XA - ma anche nei micro processorisuccessivi al 1995 per personal, tipo Intel Pentium o PowerPC o ALFA)

243tre esercizi

1) e’ dato un formato di numero in virgola mobile(binario) con 16 bit di cui 10 per le cifre (mantissa) e 5 perl'esponente (compreso il segno dell'esp. “z”):

S Z E E E E D D D D D D D D D D <= binario

a) trovare la precisione in decimale (quante cifre decimali, ovvero il numero x piu' piccolo tale che 1+x <> x)

b) trovare la codifica binaria in tale formato di: 13.5 (in base 8) = 11.625 (in base 10), poi di 6.5 (in base 10), e 5.55 (in base 10) -> per questo valore trovare poi (dal codice binario in virgola mobile) il valore corrispondente in decimale: quante cifre sono state perse?

244tre esercizi

2) dato il formato di numero in virgola mobile [formato dicodifica gia' visto] con 16 bit, di cui 10 per le cifre (mantissa)e 5 per l'esponente (compreso segno dell' espon. “z”):

S Z E E E E D D D D D D D D D D

domanda: sono rappresentabili esattamente i dati, e se si', quali ?

3.5, 23.0, 555.0, 5252.0, 78951.0 ?

245tre esercizi

3) trovare le regole per la

a) moltiplicazione e b) divisione in virgola mobile

(si usi un formato decimale (tutto in base 10) a 6 cifre, di cui 2 per l' esponente e 4 per la mantissa)

246indice sistemi posizionali

rappresentazione di numeri sistema unario storia dei sistemi di numerazione il sistema latino codici posizionali in varie basi un quiz somme numeri in base 2, 3, .. prodotto in binario base sedici (esadecimale) cambio base esercizi frazioni 0,1 da base 10 a base due limiti e overflow

Page 42: SISTEMI DI RAPPRESENTAZIONE DI NUMERIunina.stidue.net/Universita' di Trieste/Ingegneria... · 2007-10-04 · numeri (98-99) Page ‹#› 1 SISTEMI DI RAPPRESENTAZIONE DI NUMERI indice

numeri (98-99) Page ‹#›

247indice capitolo numeri con segno: NUMERI CON SEGNO

numeri con segno numeri in complemento a uno somme con segno complemento a due rappresentazione in eccesso di k esercizi sui numeri con segno

248indice capitolo numeri in virgola mobile :

NUMERI IN VIRGOLA MOBILE

rappresentazione di n.i grandi/piccoli precisione limiti esercizio somma in floating point overflow standard IEEE 754 floating point esercizi fine parte numeri

249 fine parte numeri

FINE

PARTE

NUMERI