Esame di Fondamenti di Informatica, CdL Ing. Meccanica A.A. 2013/2014 Docente: Prof. Ivan Bruno Appello: 24 Luglio 2014 N. compito _A _ Matricola Cognome: Nome: . Nota: negli esercizi 1, 2, 3 cerchiare la risposta Rn che si ritiene corretta; la risposta errata comporta 0 punti per l’esercizio. Viene richiesto espressamente lo svolgimento di tutti i passaggi e non solo il risultato. Nel testo degli esercizi i valori C,N,M corrispondono rispettivamente ai seguenti valori: codifica ASCII delle prime lettere di Cognome e Nome (maiuscole) e prima cifra ≠0 della Matricola a partire da destra. La codifica ASCII è ottenibile in decimale sommando 64 alla posizione della lettera nell’alfabeto di 26 lettere (A=65,Z=90). 1. (Punti 3) Quanti bit di indirizzo servono per accedere ad uno spazio di memoria di 1Gbyte dove la cella di memoria è di 8 bit? Soluz: L’indirizzamento complessivo deve numerare 2Gbyte/8bit, ovvero con 1byte=8bit un numero di celle pari a 1G, quindi per un totale di 1*230 = 20*230 = 230. In totale occorrono 30bit. Risposta: R1) 12 bit R2) 21 bit R3) 28 bit R4) 30 bit R5) 31 bit R6) 32 bit R7) Nessuna risposta valida 2. (Punti 3) Si consideri il seguente frammento di codice: char* p = myFunction(“funzione”); Quale fra i seguenti è il prototipo più adatto per la funzione myFunction: Risposta: R1) int myFunction ( char& ); R2) char *myFunction ( char& ); R3) char myFunction ( char ); R4) char *myFunction ( char* ); R5) void myFunction ( char* ); R6) Nessuna risposta valida 3. (Punti 3) A quale classe appartiene la complessità asintotica dell’algoritmo Merge Sort: Risposta: R1) Θ(n2) R2) Θ(log2 n) R3) Θ(n log2 n) R4) Θ(1) R5) Nessuna risposta valida 1 4. (Punti 6) Rappresentare in virgola mobile a 16 bit [S C M], usando un bit di segno, 5 bit per la caratteristica e 10 bit per la mantissa, i seguenti numeri decimali: X=(40*M)/N e Y=(N*20)/C. Effettuare quindi l’operazione di somma X+Y in virgola mobile e codificare tutta la rappresentazione in una stringa esadecimale. Valutare l’errore assoluto e percentuale rispetto al valore ottenuto dalla somma. (si veda file delle soluzioni) Risposte: X= ([…]s [……………]c [………………………………]m)2 Y= ([…]s [……………]c [………………………………]m)2 X+Y = ([…]s [……………]c [………………………………]m)2 = (…………)16 EAX+Y = …………. E%X+Y = …………% 5. (Punti 6) Effettuare l’operazione (A-B) AND X con A=(C+2*M), B=(2*N-M) e X=(0x00F0)16 utilizzando la forma complemento a 2 a 16 bit. Scrivere i valori binari di A e B, il risultato (AB) binario e la codifica in base 16, e il valore in base 16 dell’operazione data. (Nota: C e N sono la codifica ASCII delle prime lettere di Cognome e Nome maiuscole, M prima cifra da destra !=0 della matricola) ((si veda file delle soluzioni) si veda file delle soluzioni) Risposte: A = (……….........……......………)2 B = (……….........……......………)2 A-B = (……….........……......………)2 = ( __ __ __ __ )16 (A-B) AND X = ( __ __ __ __ )16 6. (Punti 5) Valutare il comportamento della seguente funzione in linguaggio C assumendo i vettori V e W di dimensione N=5 e di numeri interi così definiti: V = {2, 4M, 1, 8M, 2} e W={2M, 1, M, 1, 2M } Scrivere il vettore V e il valore della variabile s al termine di questo algoritmo. (Nota: M prima cifra da destra !=0 della matricola) (si veda file delle soluzioni) int funz( int int for int* V, int* W, int N ){ i, tmp; s = *V; (i=0; i<N; i++){ tmp = *(V+i)* W[i]; s = s + tmp; if(s%3!=0) V[i]=s; else V[i]=W[i]; } return s; } 2 Risposta: V={______________________} s=_____ 7. (Punti 5) Si valuti il comportamento del seguente frammento di codice assembly: loop: addi mul lw mul sw addi bne add $1, $9, $4, $6, $6, $7, $7, $8, $0, $10 $19, $7 1024($9) $4, $1 1024($9) $7, 1 $5, loop $0, $7 Si assuma il seguente stato dei registri e della memoria prima dell’esecuzione del blocco di istruzioni: a. Registri: $19 4 $10 2*M $5 10 $4 0 $6 0 $7 0 b. Memoria: a partire alla locazione di memoria 1024, espressa in base dieci, sono memorizzati a 32 bit i seguenti valori espressi in esadecimale a 2 byte (la parte superiore è nulla): 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 0x0008 0x0010 0x0011 0x0012 0x0013 0x0014 0x0015 0x0016 0x0017 0x0018 Si calcolino le modifiche effettuate in memoria a partire alla locazione di memoria, riportando in base 16 i valori scritti durante l’esecuzione. (Nota: M prima cifra da destra !=0 della matricola) (si veda file delle soluzioni) Risposta: 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 0x0008 0x0010 0x0011 0x0012 0x0013 0x0014 0x0015 0x0016 0x0017 0x0018 3
© Copyright 2025 ExpyDoc