Ci sono i logaritmi per risolvere questo genere di problemi: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
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; }

Rispondi quotando