uniroma1
.*_main.c
.cognome.nome
. Sulle postazioni del laboratorio sarà /home/biar/Desktop/cognome.nome/
.cognome.nome.zip
(zip -r cognome.nome.zip cognome.nome/
).cognome.nome.zip
.Per maggiori informazioni fate riferimento al regolamento delle esercitazioni.
Scrivere una funzione C uint2bin
con il seguente prototipo
void uint2bin(unsigned x, char bin[32]);
che, dato un intero x
senza segno a 32 bit e un buffer bin
di 32 caratteri, ottiene la rappresentazione binaria del numero con il bit più significativo per primo. Gli 0 e 1 nel risultato devono essere rappresentati mediante i caratteri ASCII ‘0’ e ‘1’.
Ad esempio, invocando la funzione con 0x0F0F0F0F, il buffer di output sarà “00001111000011110000111100001111”.
Usare il main di prova nella directory di lavoro E1
compilando con gcc e1_main.c e1.c -o e1
.
Scrivere nel file E2/e2.c
la vostra versione personale della funzione della libreria standard libc strcpy che copia la stringa str
nel buffer dest
e restituisce dest
. Il prototipo della funzione da realizzare è il seguente:
char *my_strcpy(char *dest, const char *src);
Usare il main di prova nella directory di lavoro E4
compilando con gcc e2_main.c e2.c -o e2
.
Rispondi alle seguenti domande, tenendo conto che una risposta corretta vale 1 punto, mentre una risposta errata vale 0 punti.
Domanda 1. Un circuito combinatorio è:
Domanda 2. Data una tensione da 12V e un LED che si illumina in presenza di una corrente nel range [50, 100] mA (oltre tale valore il LED si brucia) quale tra queste resistenze può essere inserita nel circuito per far illuminare il LED?
Domanda 3. Quale tra queste affermazioni su un flip-flop SR (latch) è falsa:
Domanda 4. Cosa calcola la seguente breadboard?
#include <string.h>
#include "e4.h"
void uint2bin(unsigned x, char bin[32]) {
int idx;
for (idx = 31; idx>=0; idx--){
bin[idx] = '0' + (x & 1);
x = x >> 1;
}
}
char *my_strcpy(char *dest, const char *src) {
char* aux = dest;
while(*src) *dest++ = *src++;
*dest = '\0';
return aux;
}