Pregunta

Necesito ayuda con esto

se me pidió que para un entero sin signo rango de 1 a 1 mil millones, cuántos se necesitan pedazos!

¿Cómo calculamos esto?

Gracias

ACTUALIZACIÓN !!!!

Esto es lo que quería saber, porque el interviwer dijo 17

¿Fue útil?

Solución

Calcular log2(1000000000) y se redondea hacia arriba. Se trabaja a 30 bits.

Por ejemplo en Python se puede calcular así:

>>> import math
>>> math.ceil(math.log(1000000000, 2))
30.0

Otros consejos

Tome el logaritmo en base 2 de 1 mil millones y Round Up.

Como alternativa, usted debe saber que los números enteros (con más de 4 mil millones de valores) requieren 32 bits, por lo tanto, para los 2 mil millones que había necesidad de 31-bits y de 1 mil millones, 30-bits.

Otra cosa muy útil para saber es que cada 10 bits de aumentar el número de valores que se pueden representar por un factor de poco más de 1.000 (1024), por lo que para 1000, lo que necesita 10 bits, 1 millón necesita 20 bits, y 1 mil millones de necesidades 30 bits.

2^10 = 1024
2^10 * 2^10 = 2^20 = 1024*1024 = 1048576
2^10 * 2^10 * 2^10 = 2^30 = 3 * 1024 ~= 1,000,000

=> 30 bits

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top