|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 297
|
[C++] conversione binario->decimale
Ciao a tutti, scrivo per un quesito probabilmente molto banale, ma forse è proprio per questo che non ne vengo fuori. Per ripassare la conversione tra basi, stavo scrivendo un programmino che converte un numero binario in decimale, ecco il codice.
#include <iostream> #include <math.h> using namespace std; int main(int argc, char** argv) { int bin[5]={1,0,0,1,1}; // bin è un numero binario uguale a 10011 che in base 10 è 19 int i, j, dec=0; // i scorre bin da sx a dx // j scorre bin da dx a sx // j mi dà l'elevamento a potenza // dec è dove viene fuori il numero decimale // l'espressione exp(...) è corretta (l'ho stampata) for (i=0, j=4; i<5, j>=0; i++, j--) { dec=dec+bin[i]*exp(j*log(2)); } cout << "dec= " << dec << endl; system("PAUSE"); return 0; } Il problema sta alla prima iterazione del for, in cui dec non risulta 16, ma 15. Grazie in anticipo per l'aiuto! |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 297
|
Ho usato quel modo di scrivere (pur sapendo bene che fosse più complicato) perché ricordo che l'aveva usato il mio prof di programmazione. Sostituendo ad exp(j*log(2)) l'espressione (2^j) dec alla fine risulta 11
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 297
|
Ecco, io da ignorante che scrivo 2^j
Ma scusa, puoi spiegarmi dove sta il problema di quell'espressione? Va bene, ritorna un double che poi viene castato a int... ma questo risulta 16, quindi non mi dà fastidio questo tipo di conversione, o no? |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 297
|
Finalmente ho capito, grazie mille! Scusa la "testardaggine", ma volevo capire cosa sbagliavo nel mio ragionamento. Quando ho provato a fare la stampa solo dell'esponenziale per vedere se fosse giusto, l'ho fatta con cout, quindi mi stampava il double (corretto), il problema invece era proprio nel cast a int. Ero convinto che un cast da double a int di un numero "preciso" come 16 (nel mio caso) avvenisse correttamente.
Grazie per l'aiuto! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:06.



















