Esercitazione i 1 Codifica e Rappresentazione dell Informazione Claudia Raibulet raibulet@disco.unimib.it
Esercizio i 1 Convertire il numero decimale 99in binario i e poi questo in esadecimale. 99 10 = 1100011 2 99 10 = 0x63 = 63 16
Esercizio io 2 Convertire i seguenti numeri esadecimali in binario: 0x52 = 0x1010101 = 0xF3B4C = 0101 0010 2 0001 0000 0001 0000 0001 0000 0001 2 1111 0011 1011 0100 1100 2
Esercizio 3 Se il numero 100 in base dieci fosse rappresentato in binario, quale sarebbe il valore del suo bit in posizione 3 (ovvero 2^2)? E nella posizione 5 (ovvero 2^4)? Rispondere senza effetuare la conversione! 1 perchè 100 = 64 + 32 + 4 = 2^6+2^5+2^2 1, perchè 100 64 + 32 + 4 26 +2 5 +2 2 0, perchè 100 = 64 + 32 + 4 = 2^6 +2^5 +2^2
Esercizio 4 Si chiede di effettuare le conversioni: Dal binario in ottale e esadecimale: 110011101110011 2 =? 8 =? 16 Dall esadecimale in ottale e binario: 0x71A9 16 =? 8 =? 2 Dall ottale in esadecimale e binario: 736 8 =? 16 =? 2
Esercizio 5 Convertire i seguenti numeri decimali in binario in modulo e segno su 8 bit: -20 = 1001 0100 MS -114 = 11110010 MS -59 = 1011 1011 MS 33 = 0010 0001 MS 10 = 0000 1010 MS
Esercizio 6 Convertire i seguenti numeri decimali in binario in complemento a 2 su 8 bit: -20 = -114 = -59 = 33 = 10 = 11101100 CA2 10001110 CA2 1100 0101 CA2 0010 0001 CA2 0000 1010 CA2
Esercizio 7 Date le seguenti coppie di rappresentazioni considerarle prima in MS e poi iin CA2; per ciascuna coppia si determini qual è il maggiore tra i valori rappresentati: MS CA2 a) 01001 <?> 10001 > > b) 10110 <?> 11010 > < c) 101 <?> 11101 > = d) 11111 <?> 10001 < >
Esercizio 8 Si chiede di calcolare la somma tra i seguenti numeri in esadecimale: 0x789 + 0x987 = 0x1110 Soluzione: 9+7 = 16 ->0(=16-16) con riporto 1 8+8+riporto 1 = 17 -> 1 (=17 16) con riporto 1 7+9+ riporto 1 = 17 -> >1(=17 16) con riporto 1 riporto 1
Esercizio 9 Si chiede di effettuare le seguenti conversioni: 432 10 =? 5 = 3212 5 12 5 =? = 7 10 10 534 5 =? 10 =??? 10
Esercizio 10 Si chiede di effettuare la seguente ente conversione: 123 8 =? 5 Indicazione: si trasforma prima il numero in base 10 e poi in base 5 123 8 = 83 10 = 313 5
Esercizio 11 Si chiede di rappresentare i seguenti numeri in eccesso 128: -20 = 0110 1100 20 = 1001 0100
Esercizio 12 Si chiede quali sono i numeri in decimali corrispondenti alla rappresentazione seguente in eccesso 128: 0000 0000 0001 1100 = -128 = -100
Nozioni fondamentali Potenze di 10 per ingresso/uscita
Esercizio 13 Su un disco di 2GB quante foto da 3MB possono essere memorizzate? 2GB = 2 * 1024 MB= 2048 MB n = 2048/3 = 682, 6
Tabella ASCII in esadecimale American Standard Code for Information Interchage
Esercizio 14 Codificare in numeri esadecimali e decimali secondo lo standard ASCII le seguenti strighe: Esadecimale: Bit = 42 69 74 2012 = 32 30 31 32 x=7*(y+z) = 78 3D 37 2A 28 79 2B 7A 29 Decimale: Bit = 066 105 116 2012 = 050 000 049 050 x=7*(y+z) = 120 051 055 042 040 121 043 122 041
Esercizio 15 Si abbia una applicazione embedded in cui si devono fare delle operazioni aritmetiche e sia noto in anticipo che i valori di partenza, i risultati intermedi ed anche quelli finali stanno nell'intervallo [12345678, 98745678]. E' anche noto che la risoluzione richiesta per i calcoli e' il centesimo di unita'. Per questa applicazione non e' ipotizzabile ricorrere ad un hardware predisposto ad-hoc, per motivi di costo e di tempi di sviluppo. Pertanto le uniche alternative sono quelle costituite da usare delle macchine esistenti sul mercato. Si determini se la aritmetica intera a 32 bit e/o quella a 64 bit, usate come base per sviluppare calcoli in virgola fissa, siano adeguate per l'applicazione.
Esercizio 15 - Soluzione accuratezza richiesta per le operazioni aritmetiche: 1/100 = 0.01 (base 10) codici che si possono rappresentare in virgola fissa su 32 bit: 2^32 = 2^10 * 2^10 * 2^10 *2^2 = 1024 * 1024 *1024 *4 = 4294967296 oppure codici i che si possono rappresentare in virgola fissa su 64 bit: 2^64 = 1.844674407370955e+19 = 18446744073709550000 intervallo di valori da rappresentare: 98745678-12345678 = 86400000 accuratezza disponibile su 32 bit: 86400000 / 4294967296 = 0.02011656761169430201165676116943 => non sufficiente accuratezza disponibile su 64 bit: 86400000 / (18446744073709550000 = 4294967296 * 4294967296) = 0.000000000004684 = 4.68 * 10^(-12) => ok!
Esercizio 16 Quale è la rappresentazione in virgola mobile per il seguente numero decimale: 13,25 = 1101,01 = 1,10101*2 3 La rappresentazione in virgola mobile su 32 bit: 1 bit di segno 8 bit per l esponente (eccesso 127) 23 bit per la mantissa S E 8 bit M 23 bit 3130 2928 272625 24 2322 21 20191817 16 15141312 11 10 9 8 7 6 5 4 3 2 1 0 0 10000010 1010100000000000000000
Esercizio 16 - Soluzione La parte intera si considera separatamente 13 in base 10 ->1101 in base 2 La parte decimale si considera separatamente e si multiplica per 2 come segue: 0.25 * 2 = 0.5 0.5 * 2 = 1.0 0.0 * 2 = 0.0 Si prende solo la parte intera di ogni risultato Si scrive il numero partendo dalla prima parte intera ottenuta
Esercizio 17 Quale valore è rappresentato dalla seguente sequenza di bit interpretati come un numero in virgola mobile? 1 10000000 11000000000000000000000 segno: MSB = 1 numero negativo esponente: 1000 0000 2 = 128 10 - in codice eccesso 127 128 127 = 1 -parte frazionaria della mantissa: 11000000000000000000000 2 = 0,75 10 0.11 = 1*2-1 +1*2-2 = 0,75 10 -Risultato: (-1)*(1+0.75)*2 )( ) 1 = - 1.75*2 = -3.5
Esercizio 18 Si abbia una applicazione embedded in cui si devono fare delle operazioni aritmetiche e sia noto in anticipo che i valori di partenza, i risultati intermedi ed anche quelli finali stanno nell'intervallo [12345678, 98745678]. E' anche noto che la risoluzione richiesta per i calcoli e' il centesimo di unita'. Per questa applicazione non e' ipotizzabile ricorrere ad un hardware predisposto ad-hoc, per motivo di costo e di tempi di sviluppo. Pertanto le uniche alternative sono quelle delle macchine esistenti sul mercato. Si determini se usando la rappresentazione in virgola mobile a 32 bit con 8 bit per la rappresentazione in eccesso 127 dell'esponente e 23 bit per la rappresentazione della mantissa con modulo e segno, siano adeguate per l'applicazione. li i
Esercizio 18 - Soluzione 98745678 in base 10 -> 101 1110 0010 1001 0101 0100 1110 in base 2
Esercizio 18 - Soluzione accuratezza per le operazioni aritmetiche = 1/100 = 0.01 (base 10) 98745678 -> 101 1110 0010 1001 0101 0100 1110 in base 2 = 1,01 1110 0010 1001 0101 0100 1110 * 2^26 Il numero e' positivo -> il bit di segno = 0 L' esponente in eccesso 128: 127 + 26 = 10011001 Mantissa su 23 bit: 01 1110 0010 1001 0101 0100 1110 -> gli ultimi 3 bit non possono essere rappresentati Si ottiene la seguente rappresentazione: 0 10011001 01111000101001010101001 che in realta' corrisponde al numero: 1,01111000101001010101001 * 2^26 = 101 1110 0010 1001 0101 0100 1000 in base 2 -> 98746432 in base 10 98746432-98745678 = 754 maggiore del centesimo di unità