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;
}