Numero di bit per rappresentare un intero relativo

Nepenthe
Salve, vorrei sapere qual è il metodo per sapere quanti bit sono necessari per rappresentare un numero relativo. Mi viene chiesto in un esercizio. Quale ragionamento devo fare? Se non sbaglio esiste una formula (non quella con il logaritmo) che permette tramite un semplice calcolo di saperlo. Ad esempio mi viene richiesto quanti bit sono necessari per rappresentare il numero 245.985.075.585.530 e sul risultato dice che ce ne vogliono 49... Come ci è arrivato?

Risposte
hamming_burst
un metodo oltre quello con i logaritmi non saprei proprio, al momento non mi viene in mente....
Posso solo dirti, che se un numero in base 10 (numero assoluto) ha T cifre, in base 2 devi aggiungere un bit per il segno per usare la definizione di numero relativo.

Rggb1
"Nepenthe":
quanti bit sono necessari per rappresentare il numero 245.985.075.585.530 e sul risultato dice che ce ne vogliono 49... Come ci è arrivato?


Ha usato il logaritmo. ;)

Spesso però non serve la calcolatrice, ricordando che $log_10(x)$ è (circa) il numero delle cifre, e che il logaritmo decimale di due è (circa) $0.3$, nel caso hai quindici cifre:
$n~=15/0.3 ~=15*3.3 ~=49$

Nepenthe
Quindi devo fare sempre il numero di cifre per 3.3 e arrotondare in eccesso il risultato?

Rggb1
Devi arrotondare all'intero più vicino. Se non usi i logaritmi (nel senso che non calcoli i valori precisi degli stessi), questa è una buona approssimazione, non un calcolo preciso.

hamming_burst
Ah ecco si usano i logaritmi, altri metodi non penso ce ne siano....
solo per far capire il perchè di tale proprietà, con i conti che hai esposto te,

se il numero è a 15 cifre e sei in base 10, cioè:

$10^15 rArr log_10 (10^15) = 15*log_10 (10)$ essendo che vuoi sapere il numero di bit in base due $15*(log_10 (10))/(log_10 (2)) ~~ 15* 1/(0.3) = 15/0.3$

si usa la proprietà dei logaritmi e dell'esponenziale, e come dice bene Rggb è un'approssimazione, un limite superiore.

però Rggb non dovrebbero essere 50 i bit?
essendo che richiede "numero relativo" perciò numero assoluto più il bit di segno?

Rggb1
Certo. Essendo una approssimazione, dovrebbe essere così e sbaglieremmo di una cifra, in realtà con il nostro $x$ dell'esempio

$(log(x))/(log(2))~=47,8$

quindi 48 cifre, più segno. Infatti

$245985075585530_d=110111111011100011011101000011001110000111111010_b$

hamming_burst
aaah non mi tornava qualcosa, 49 era già con segno.
perfetto, grazie dela precisazione :-)

edge1
Ma l'esercizio ti dice anche in che rappresentazione devi scriverlo?
Se non mi sbaglio però il risultato dovrebbe esse sempre 49 sia in modulo e segno sia in complemento a 2

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.