12/12/10 13:03
a_butta
Ciao a tutti. La mia è una domanda più tendente alla matematica, dunque non sapendo dove porla, ho scritto qui tra gli algoritmi.
Non riesco a trovare un qualsiasi modo per calcolare, dato un qualsiasi numero in base 10, il numero di cifre che questo numero avrà in base 2.
Cioè, mi spiego meglio:
Avendo in input 25, vorrei che questo algoritmo mi restituisse 5, poichè 25 = 11001 in base 2...
Sono già riuscito a vedere come ogni volta che si aggiunge 8 partendo da un numero multiplo di 8, il numero binario aumenta di una cifra:
8 = 1000
16 = 10000
32 = 100000
64 = 1000000
Come è ovvio che sia. Ma non riesco a trarre una regola generale...
Grazie in anticipo per l'aiuto!
Ultima modifica effettuata da a_butta 12/12/10 13:05
aaa
12/12/10 13:10
a_butta
mmmh... potrei esserci arrivato.
Per caso varrebbe:
int((logN)/(log2)) + 1
dove N è il numero in base 10?
Ultima modifica effettuata da a_butta 12/12/10 13:11
aaa
12/12/10 19:13
TheKaneB
è banalmente ceil(log2(N))
aaa
13/12/10 16:16
Il Totem
Se N = 0 usi -infinito cifre?
E' ceil(log2(N+1)) + 1. N+1 perché i numeri rappresentabili da 0 a N sono N+1. +1 alla fine per il bit di segno se usi la notazione modulo e segno o complemento a 2.
aaa
14/12/10 16:47
Il Totem
Se N == 0, ti serve almeno una cifra; non puoi nemmeno utilizzare 0 cifre.
aaa