come faccio a fare una procedura che dato un numero me lo converta in base 2
grazieeeeeeeeeeeeeee
come faccio a fare una procedura che dato un numero me lo converta in base 2
grazieeeeeeeeeeeeeee
Come faresti con "carta e penna"?
Dato N chiedi e' dispari ? se si scrivi 1 altrimenti scrivi 0
poi prendi N/2 (solo la parte intera) chiedi e' dispari? se si scrivi 1 altrimenti scrivi 0
continua a dimezzare finche' non arrivi a 1 o 0
Avevo in mente
void convert2bin(int num)
{
int mask = 0x80000000; // inizializzi la maschera
while(mask > 0)
{
printf("%c",
(num & mask) ? 1 : 0);
mask = mask >> 1;
}
}
Trascura la pow, che altro non fa che ottenere tutte le potenze di 2 ...codice:#include <iostream> #include <stdlib.h> #include <math.h> using namespace std; int main() { int valore; cout<<"\nInserisci il numero da convertire: "<<endl; cin>>valore; cout<<"\nIl numero convertito in base 2 e': "<<endl; for (int j = 8*sizeof(int); j >= 0; j--) cout << (bool)(valore&((int)pow(2,j))); cout << endl << endl; system("pause"); return 0; }
Guarda la sizeof ...
(sizeof (int)*8) ti consente di ottenere il numero di bit ...
(sizeof restituisce il numero di byte)...
Prova con: int mask = pow(2,sizeof(int)*8);
Poi stampi un numero come carattere -_-" (0x30 -> 0, 0x31 -> 1)...
Experience is what you get when you don’t get what you want
(tra parentesi, invece di pow(2,j) usa 1<<j)
Amaro C++, il gusto pieno dell'undefined behavior.
non è C ;-)Originariamente inviato da Xaratroom
codice:#include <iostream> /* omissis */ using namespace std; int main() { /* omissis */ cout<<"\nInserisci il numero da convertire: "<<endl; cin>>valore; cout<<"\nIl numero convertito in base 2 e': "<<endl; for (int j = 8*sizeof(int); j >= 0; j--) cout << (bool)(valore&((int)pow(2,j))); cout << endl << endl; /* omissis */ }
Giusto quello che scrive MItaly, perchè meno dispendioso ...
non è C ;-)Il tipo di dato bool può contenere solo i valori logici 0 e 1 ...codice:... printf("\nInserisci il numero da convertire: \n"); scanf ("%d ",valore); printf("\nIl numero convertito in base 2 e': \n"); ...
Al posto del casting bool puoi inserire l'operatore ternario, come hai fatto nel tuo codice, la variabile j non può essere dichiarata nel for ...
Experience is what you get when you don’t get what you want