Rappresentazioni numeriche



Похожие документы
I.4 Rappresentazione dell informazione

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

Calcolatori: Sistemi di Numerazione

Rappresentazione binaria

Sistemi di Numerazione Binaria

I.4 Rappresentazione dell informazione - Numeri con segno

La codifica digitale

Corso di Sistemi di Elaborazione delle informazioni

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

Esercitazione del 09/03/ Soluzioni

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

Sistemi di Numerazione Binaria

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

Calcolo numerico e programmazione Rappresentazione dei numeri

Elementi di informatica

Richiami sulla rappresentazione dei numeri in una base fissata

Codifica binaria. Rappresentazioni medianti basi diverse

Cap. 2 - Rappresentazione in base 2 dei numeri interi

La codifica dei numeri

Rappresentazione dell informazione

Codifica. Rappresentazione di numeri in memoria

04 Aritmetica del calcolatore

Esercitazione 1 del 07/10/2011

La codifica. dell informazione

La codifica. dell informazione

Rappresentazione e Codifica dell Informazione

I sistemi di numerazione e la numerazione binaria

Rappresentazione dei numeri

Algoritmi Istruzioni che operano su dati. Per scrivere un programma è necessario. che l esecutore automatico sia in grado di.

Rappresentazione dell Informazione

Aritmetica dei Calcolatori Elettronici

LA TRASMISSIONE DELLE INFORMAZIONI SECONDA PARTE 1

Rappresentazione di dati: numerazione binaria. Appunti per la cl. 3 Di A cura del prof. Ing. Mario Catalano

Sistemi di numerazione

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

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Rappresentazione dei Dati

Lezione 3. I numeri relativi

Транскрипт:

Rappresentazioni numeriche Un numero è dotato di un valore una rappresentazione La rappresentazione di un numero è il sistema che utilizziamo per indicarne il valore. Normalmente è una sequenza (stringa) di simboli provenienti da un alfabeto es. il sistema di rappresentazione dei numeri utilizzato dai romani era un sistema additivo: ad ogni simbolo corrisponde un valore; il valore del numero si otteneva sommando e/o sottraendo i valori dei simboli: VII = 5+1+1=7 LIX = 50+(10-1) = 59

Rappresentazioni numeriche Il sistema che utilizziamo normalmente è un sistema posizionale La rappresentazione del numero è data da una stringa di simboli (cifre) provenienti da un alfabeto la cui cardinalità b costituisce la base della rappresentazione Ogni cifra di una stringa ha un peso che dipende dalla posizione della cifra nella stringa La posizione viene numerata da 0 a partire dalla cifra delle unità Es. per il numero 5435: posizione 3 2 1 0 cifre 5 4 3 5

Rappresentazioni numeriche Il peso della cifra di posto k è pari a b k Il valore del numero è dato dalla somma di ciascuna cifra moltiplicata per il proprio peso La definizione si estende anche ai numeri con parte frazionaria considerando le posizioni negative es. 5435.23=5 10 3 4 10 2 3 10 1 5 10 0 2 10 1 3 10 2

Rappresentazioni numeriche In generale il valore x del numero avente n cifre intere e m frazionarie, rappresentato dalla sequenza: c n 1 c n 2...c 1 c 0. c 1...c m in cui le cifre provengono da un alfabeto A avente b cifre, è dato da: k=n 1 k= m c k b k

Rappresentazioni numeriche Il valore del numero non cambia cambiando la base. Le operazioni che eseguiamo sui numeri sono invarianti rispetto ai cambiamenti di base La somma, moltiplicazione etc. si eseguono con le stesse modalità (stesso algoritmo) in tutte le basi Per effettuare i calcoli dobbiamo 'imparare' le operazioni con i numeri di una cifra (le tabelline pitagoriche) Dobbiamo avere a disposizione un alfabeto

Conteggio in base 10, 2, 5 e 16 10 2 5 16 10 2 5 16 10 2 5 16 0 0 0 0 17 10001 32 11 34 100010 114 22 1 1 1 1 18 10010 33 12 35 100011 120 23 2 10 2 2 19 10011 34 13 36 100100 121 24 3 11 3 3 20 10100 40 14 37 100101 122 25 4 100 4 4 21 10101 41 15 38 100110 123 26 5 101 10 5 22 10110 42 16 39 100111 124 27 6 110 11 6 23 10111 43 17 40 101000 130 28 7 111 12 7 24 11000 44 18 41 101001 131 29 8 1000 13 8 25 11001 100 19 42 101010 132 2A 9 1001 14 9 26 11010 101 1A 43 101011 133 2B 10 1010 20 A 27 11011 102 1B 44 101100 134 2C 11 1011 21 B 28 11100 103 1C 45 101101 140 2D 12 1100 22 C 29 11101 104 1D 46 101110 141 2E 13 1101 23 D 30 11110 110 1E 47 101111 142 2F 14 1110 24 E 31 11111 111 1F 48 110000 143 30 15 1111 30 F 32 100000 112 20 49 110001 144 31 16 10000 31 10 33 100001 113 21 50 110010 200 32

Somma e sottrazione Il meccanismo dei riporti e dei prestiti funziona nel modo consueto: + 5 0 1 2 3 4 1 1 riporti 1 1 1 prestiti 0 0 1 2 3 4 2 3 4 + 2 0 3 1-1 1 2 3 4 10 1 4 2 = 4 3 3 = 2 2 3 4 10 11 4 3 1 1 0 4 3 3 3 4 10 11 12 4 4 10 11 12 13 1 1 1 riporti 1 1 1 prestiti + 2 0 1 1 0 1 1 + 1 0 1 0-0 0 1 1 1 1 = 1 1 1 = 1 1 10 1 0 0 1 0 1 1

Moltiplicazione e divisione Gli algoritmi della moltiplicazione e della divisione sono i soliti: * 5 0 1 2 3 4 0 0 0 0 0 0 2 3 4 + 2 3 4 4 1 0 1 2 3 4 4 2 = 1 4 3 2 2 0 2 4 11 13 1 0 2 3 1 3 0 3 11 14 22 2 1 0 1-4 0 4 13 22 31 2 2 0 3 3 * 2 0 1 1 0 1 1 + 1 0 1 1 1 0 0 0 0 1 0 1 = - 1 1 0 1 1 0 1 1 0 1 1 1 1 0 0 0 0-1 1 0 1 1-1 1 0 1 1 1

Somma e sottrazione In esadecimale abbiamo 16 cifre: si utilizzano le lettere da A a F: + 16 0 1 2 3 4 5 6 7 8 9 A B C D E F 1 1 1 riporti 0 0 1 2 3 4 5 6 7 8 9 A B C D E F A 8 F 6 + 1 1 2 3 4 5 6 7 8 9 A B C D E F 10 B 2 C = 2 2 3 4 5 6 7 8 9 A B C D E F 10 11 B 4 2 2 3 3 4 5 6 7 8 9 A B C D E F 10 11 12 4 4 5 6 7 8 9 A B C D E F 10 11 12 13 1 0 1 prestiti 5 5 6 7 8 9 A B C D E F 10 11 12 13 14 8 A C 2-6 6 7 8 9 A B C D E F 10 11 12 13 14 15 2 F 6 D = 7 7 8 9 A B C D E F 10 11 12 13 14 15 16 5 B 5 5 8 8 9 A B C D E F 10 11 12 13 14 15 16 17 9 9 A B C D E F 10 11 12 13 14 15 16 17 18 A A B C D E F 10 11 12 13 14 15 16 17 18 19 B B C D E F 10 11 12 13 14 15 16 17 18 19 1A C C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B D D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C E E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D F F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E

Moltiplicazione e divisione In esadecimale abbiamo 16 cifre: si utilizzano le lettere da A a F: * 16 0 1 2 3 4 5 6 7 8 9 A B C D E F A 8 F 6 * 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 C = 1 0 1 2 3 4 5 6 7 8 9 A B C D E F 7 E B 8 8 2 0 2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E 5 4 7 B 0-3 0 3 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D 5 C 6 6 8 8 4 0 4 8 C 10 14 18 1C 20 24 28 2C 30 34 38 3C 5 0 5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B 6 0 6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A 7 0 7 E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69 8 A C 2 2 F 8 0 8 10 18 20 28 30 38 40 48 50 58 60 68 70 78 5 E 2 F 3 9 0 9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87 2 C C A 0 A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96 2 C 1 B 0 B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5 B 2 C 0 C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4 8 D D 0 D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3 2 5 E 0 E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2 F 0 F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1

Conversioni di base La formula he fornisce il valore di un numero può essere utilizzata per ottenere le rappresentazioni nelle varie basi: se la applichiamo al numero 283 e usiamo l'aritmetica della base 10 (la consueta) otteniamo ovviamente: 283=2 10 2 8 10 1 3 10 0

Conversioni di base Se utilizziamo invece l'aritmetica in base 5, ricordando che: 10 10 =20 5 8 10 =13 5 dall'espressione in base 10 283=2 10 2 8 10 1 3 10 0 = otteniamo, operando in base 5, 2 5 20 5 2 13 5 20 5 1 3= 2 5 400 5 310 5 3 5 = 1300 5 310 5 3 5 =2113 5

Conversioni di base Se l'espressione la calcoliamo in base 2: 283=2 10 2 8 10 1 3 10 0 = ma: 10 10 =1010 2 2 10 =10 2 8 10 =1000 2 3 10 =11 2 otteniamo, operando in base 2, 10 1010 10 1000 1010 11= 10 1100100 1010000 11= 11001000 1010000 11=100011011

Conversioni di base Se l'espressione la calcoliamo in base 16: 283=2 10 2 8 10 1 3 10 0 = ma: 10 10 =A 16 A 2 =64 16 otteniamo, operando in base 16, 2 A 2 8 A 3= 2 64 50 3=C8 50 3=11B

Conversioni di base D'altronde se calcoliamo le tre espressioni in aritmetica decimale otteniamo: 2113 5 =2 5 3 1 5 2 1 5 3= 2 125 25 5 3=283 100011011 2 =1 2 8 1 2 4 1 2 3 1 2 1= 256 16 8 2 1=283 11B 16 =1 16 2 1 16 11= 256 16 11=283

Conversioni di base La formula polinomiale ci risulta più facile da applicare se dobbiamo lavorare in base 10 Quindi ogni volta che dobbiamo convertire un numero da una base b diversa da 10, in base 10. Per effettuare la conversione da base 10 a una altra base, ma usando l'aritmetica decimale, si ricorre al metodo delle divisioni successive

Conversioni di base Consideriamo la parte intera del numero: x=c n 1 b n 1 c n 2 b n 2.. c 1 b c 0 mettendo in evidenza b x=b c n 2 b n 2 c n 3 b n 3..c 1 c 0 = b q 1 c 0 ovvero c 0 é il resto della divisione di x per b In tal caso la divisione e il calcolo del resto vengono effettuati in base 10

Conversioni di base Riferendoci all'esempio precedente, organizzando le divisioni in colonna e scrivendo solo i resti: Base 5 Base 2 Base 16 283 3 283 1 283 11 B 56 1 141 1 17 1 1 11 1 70 0 1 1 1 2 2 35 1 0 0 0 0 17 1 0 8 0 X = 2113 5 4 0 2 0 1 1 0 X = 11B 16 X = 100011011 2

Parte frazionaria Consideriamo ora la parte frazionaria del numero: x=c 1 b 1 c 2 b 2... moltiplicando per b x b=c 1 c n 2 b 1 c n 3 b n 2...= c 1 x 1 ovvero c 1 é la parte intera del prodotto di x e b mentre x 1 ne é la parte frazionaria. Anche in tal caso i calcoli vengono effettuati in base 10

Parte frazionaria Applicando ricorsivamente la stessa procedura otteniamo la sequenza delle cifre: x b=c 1 x 1 x 1 b=c 2 x 2 x 2 b=c 3 x 3 x 3 b=c 4 x 4... In tal caso la sequenza potrebbe non finire ossia il numero risulta periodico.

Parte frazionaria Base 5 Base 2 Base 16 0,23 1,15 0,23 0,46 0,23 3,68 3 0,15 0,75 0,46 0,92 0,68 10,88 A 0,75 3,75 0,92 1,84 0,88 14,08 E 0,75 3,75 0,84 1,68 0,08 1,28 1 0,75 3,75 0,68 1,36 0,28 4,48 4 0,75 3,75 0,36 0,72 0,48 7,68 7 0,72 1,44 0,68 X = 0,10(3) 5 0,44 0,88 0,88 1,76 X = 0,3(AE147) 16 0,76 1,52 0,52 1,04 0,04 0,08 0,08 0,16 0,16 0,32 0,32 0,64 0,64 1,28 0,28 0,56 0,56 1,12 0,12 0,24 0,24 0,48 0,48 0,96 0,96 1,92 0,92 X = 0,00(11101011100001010001) 2

Parte frazionaria Un numero può diventare periodico cambiando la base di rappresentazione Es. 0.1 in base 10 diventa periodico quando lo si converte in base 2 Ne segue che la semplice rappresentazione in binario di un numero, anche se razionale, può dare origine ad errori di approssimazione. Infatti i registri della CPU e la memoria sono costituiti da un numero finito di bit.

Base 2 e base 16 Per convertire un numero da una base b ad una b k è sufficiente raggruppare le cifre a gruppi di k. (Dimostrare per esercizio) Es. da base 2 a 16=2 4 si raggruppano le cifre in gruppi di 4 e ad ogni gruppo si sostituisce la cifra esadecimale corrispondente. 0 1 0 1 1 1 0 0 1 1 0 1 1 0 1 0 5 C D A

Base 2 e base 16 La base esadecimale è utilizzata normalmente per esprimere in forma compatta le sequenze binarie Anche in Java è possibile esprimere costanti numeriche esadecimali usando il prefisso 0x : 0xA82B 0xF02A Per rappresentare caratteri Unicode si usa il prefisso \u : \u03b1

Numeri con segno I numeri negativi si possono rappresentare in modulo e segno (come facciamo normalmente) Un bit (es. quello più a sinistra) rappresenta il segno I restanti bit il modulo Non è una rappresentazione efficiente: Ci sarebbero 2 zeri; es. a 8 bit: 00000000 e 10000000 I circuiti aritmetici sarebbero più complicati Per la sottrazione bisogna determinare il numero con il modulo più grande ecc.

Complemento alla base Quando si opera con un numero finito di cifre si rappresentano i numeri negativi con il metodo del complemento alla base. In binario, se abbiamo N bit a disposizione, possiamo rappresentare 2 N numeri diversi: Es. da 0 a 2N -1 : solo numeri positivi da -2 N-1 a 2 N-1-1 : metà sono positivi e metà negativi (complemento a 2) Lo 0 è considerato positivo senza particolari conseguenze, ma ha una sola rappresentazione.

Complemento alla base r(x) 0 2 N 1 1 2 N 1 2 N 1 x 2 N 1 1 0 2 N 1 1 r x = x se 0 x 2N 1 2 N x=2 N x se 2 N 1 x 0

Complemento a 2 r(x) x 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 2 2 0 0 1 1 3 3 0 1 0 0 4 4 0 1 0 1 5 5 0 1 1 0 6 6 0 1 1 1 7 7 1 0 0 0 8-8 1 0 0 1 9-7 1 0 1 0 10-6 1 0 1 1 11-5 1 1 0 0 12-4 1 1 0 1 13-3 1 1 1 0 14-2 1 1 1 1 15-1 Es. con 4 bit I numeri andranno da -8 a +7 Qualsiasi operazione che fornisca un risultato che ecceda questi limiti origina un errore di overflow Il bit più a sinistra indica il segno E' facile dimostrare che se il peso del bit di segno si considera negativo si può utilizzare la formula polinomiale per ottenere il valore. se x 0 allora r x 2 N 1 e quindi il bit più a sinistra di r x vale1; da x=r x 2 N otteniamo che il suo peso da 2 N 1 diventa 2 N 1 2 N = 2 N 1

Cambio di segno Definiamo l'operazione di complemento a 2 C 2 y =2 N y Fare il complemento a 2 equivale a cambiare di segno il numero. Vale: C 2 r x =r x Infatti: C 2 r x = 2N x = 2 N x = r x se 0 x 2 N 1 2 N 2 N x = x = r x se 2 N 1 x 0

Cambio di segno Se analizziamo l'operazione C 2 y =2 N y= 2 N 1 y 1 Osserviamo che 2N -1 è un numero formato da N bit di valore 1 es. 2 4 1=10000 2 1=1111 2 Per cui l'operazione tra parentesi equivale a invertire i bit di y: C 2 6 = 2 4 1 6 1= 1111 2 0110 2 1=1001 2 1=1010 2

Cambio di segno -128 64 32 16 8 4 2 1 pesi 0 1 0 1 1 0 1 0 = 2 6 +2 4 +2 3 +2=90 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 + Inversione dei bit Somma 1 1 0 1 0 0 1 1 0 = -2 7 +2 5 +2 2 +2 1 =-90

Cambio di segno (alt.) -128 64 32 16 8 4 2 1 0 1 0 1 1 0 1 0 Passo 1: lascia invariati i bit fino al primo 1 (compreso) Passo 2: inversione dei bit rimanenti 1 0 1 0 0 1 1 0 Dimostrare l'equivalenza dei due metodi

Le operazioni In pratica le operazioni si eseguono in sulle rappresentazioni trascurando i riporti oltre la N-esima cifra In particolare la sottrazione si realizza sommando al minuendo il complemento a 2 del sottraendo Si ha overflow quando sommando 2 numeri di stesso segno si ottiene un numero di segno opposto