PDA

View Full Version : [C] conversione decimale->binario


Avalanche
20-04-2009, 19:43
devo fare questa funzione in c ma ho molte restrizioni...

va usato lo shift... si usa una funzione void con due argomenti: un vettore in cui va memorizzato il numbinario e un unsigned int dove si passa il numdecimale.

non posso usare funzioni matematiche come il pow, e nemmeno le divisioni successive in maniera diretta....

come posso fare?

71104
20-04-2009, 22:14
pseudoalgoritmo: fintantoché il numero decimale é diverso da zero shiftalo a sinistra di 1 e aggiungi in coda al vettore un 1 se c'é resto o uno 0 altrimenti. in altre parole:

void Convert(vector<int> &Result, unsigned int Number)
{
do
{
if (Number & 1)
{
Result.push_back(1);
}
else
{
Result.push_back(0);
}
Number >>= 1;
}
while (Number);
}

(non l'ho testato)

Avalanche
21-04-2009, 20:26
posto il codice corretto visto che ho risolto

void convdecbin(char numbin[32], int mydec){

int i;

for(i=0; i<32; i++){
numbin[i] = mydec & 1
mydec = mydec>>1
}
return;
}

DanieleC88
21-04-2009, 20:51
Così però lo salvi invertito, o no? :)

Avalanche
21-04-2009, 21:17
si ma basta stamparlo al contrario...

nel programma che dovevo fare questo è perfetto...

DanieleC88
21-04-2009, 21:36
Vabbe' sì, è identico, ma facevi prima a salvare gli elementi con indice (31-i), tutto qui. :)

ciao ;)