Administración de memoria (programación de computadoras): ¿Por qué el tamaño de la RAM siempre está en potencias de 2?

Esto tiene que ver con cómo se dirige la memoria.
Para recuperar o almacenar una palabra en la memoria, debe especificar dónde / desde. Esto se llama direccionamiento.
Las direcciones de memoria son números binarios: con una dirección de n bits, puede especificar de forma exclusiva las ubicaciones de memoria [matemáticas] 2 ^ {n} [/ matemáticas]. Por lo tanto, elegir un no poder de dos como su tamaño de memoria dará como resultado un espacio perdido o direcciones inválidas.

Por ejemplo, supongamos que elige una RAM de 43 bytes y suponga que se dirige a las ubicaciones de 0 a 42. Puede elegir una dirección de 5 bits, en cuyo caso las ubicaciones 32-42 no se utilizarán (5 bits solo pueden direccionar 32 ubicaciones); o una dirección de 6 bits que cubre toda la memoria pero deja direcciones de memoria no válidas en el rango 43-64 (dirección de 6 bits 64 ubicaciones).
Por lo tanto, dado que el espacio de direcciones por definición es siempre una potencia de dos, la memoria siempre se completa a potencia de dos para evitar complicaciones.

Esta es una respuesta de Super Usuario:

La memoria está estrechamente vinculada a la CPU, por lo que hacer que su tamaño sea una potencia de dos significa que se pueden empaquetar múltiples módulos que requieren un mínimo de lógica para cambiar entre ellos; solo se necesitan verificar unos pocos bits desde el final (ya que la representación binaria del tamaño es 1000 … 0000 independientemente de su tamaño) en lugar de muchos más bits si no fuera una potencia de dos.
Los discos duros no están vinculados a la CPU y no están empaquetados de la misma manera, por lo que no se requiere exactitud de su tamaño.

Fuente: http://superuser.com/questions/2

No siempre, pero muy a menudo. Es más conveniente crear recuerdos que sean rectangulares, por lo que el número de bits suele ser x veces y. Y generalmente es más conveniente direccionar la memoria con binario, por lo que el número de direcciones posibles tiende a ser una potencia de dos. Por ejemplo, su 8086 básico tiene 16 bits de direccionamiento lineal, más otros 4 bits añadidos a la dirección del segmento.

En los viejos tiempos, cuando las computadoras podían direccionar solo 16 bits, si los puertos de E / S se asignaban al espacio de direcciones, a menudo ocupaban las 4K superiores de direcciones, por lo que solo podía instalar 60K de RAM. Eso no fue un problema, ya que los chips ram eran como $ 30 por 8x8K o 64K bits en 1984, por lo que solo compraría 7 de esos para hacer 56K y tal vez un chip 4K para completar el resto y luego su espacio de direcciones estaba lleno.

Probablemente también fue posible comprar chips de memoria ram con áreas defectuosas, por lo que podría obtener un chip “6K” que era básicamente un chip de 8K con bits defectuosos en los 2K superiores. Esto todavía está hecho, muchas CPU de 2 y 4 núcleos son en realidad de 8 núcleos con núcleos defectuosos.

La memoria en las computadoras casi siempre se aborda utilizando bits binarios. Por lo tanto, para llenar completamente el espacio de memoria, el número de ubicaciones de memoria se elevará 2 al número de bits de dirección utilizados en el chip.
2 elevado a cualquier potencia entera siempre es una potencia de 2.

Dejar algunos bits nuestro (sin llenar el espacio de memoria) conduciría a lagunas en la memoria continua cuando se utilizan múltiples chips de memoria.

Soy Suresh Kumar, seguido de #SureshSanz

La respuesta es tan simple …

Toma el número 11 (1011)

Si divide el número con 2 potencia 1 .. Cociente = 5, resto = 1

Si divide el número con 2 potencia 2 .. Cociente = 2, resto = 3

Si divide el número con 2 potencia 3 .. Cociente = 1, resto = 3

Si divide el número con 2 potencia 1 .. Cociente = 0, resto = 11

Así que considere cuando divida un número binario de n dígitos con 2 potencias k.

El resto es k y el bit significativo restante es el cociente.

Esto es fácil para las asignaciones de memoria. Para que toda la memoria esté en el poder de 2.

Sígueme en #Sureshsanz para cualquier aclaración.