Originariamente inviato da Crow©
ciao duonovembre e grazie per la risposta, mi sono espresso male non devo invertire un decimale in binario ma devo solo dire quanti bit minimo occorre per rappresentare quel numero, esempio se metto 8 allora mi deve restituire 4 cioè 4bit 1000 che rappresenta 8
Ci sono i logaritmi per risolvere questo genere di problemi:
bit = trunc ((log in base 2 di 8) + 1);
codice:
#include <stdio.h>
#include <math.h>
int main(void){
/*
* Compiled and tested with:
* i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367)
*
* Examples:
* 7 = 111 -> 3 bit
* 8 = 1000 -> 4 bit
*/
int n, bit=0;
printf("Inserisci un numero decimale");
scanf("%d", &n);
if (0 != n){
bit = (int) (1+log (n)/log (2.0));
}
printf("%d", bit);
return 0;
}