Saltar al contenido

¿Cómo calcular el tamaño de la memoria por un rango de direcciones dado?

Solución:

En su ejemplo para el Rango 1, está en lo correcto. Ese es el tamaño de la memoria, expresado en hexadecimal, en bytes.

Puede obtener la mayor información al convertir primero 00FF FFFF a un número decimal y luego convertir ese número de bytes en megabytes.

Para convertir de bytes a megabytes use la relación

1 MB = 1 Megabyte = 1024 * 1 KB = 1,048,576 bytes.

Hay toneladas de convertidores hexadecimales a decimales en línea. La calculadora integrada en Windows también puede realizar la conversión.

Para los otros rangos, nuevamente desea hacer una resta para determinar el tamaño del rango, y luego aplicar los pasos anteriores, p. Ej.

 FBFF FFFF
-
 FA00 0000
 ---------
 01FF FFFF

Una vez que haya seguido esos pasos para comprender mejor lo que está sucediendo, la siguiente relación le permitirá responder esas preguntas más rápido:

0010 0000 = 1,048,576

Entonces 1 MB es lo mismo que 0010 0000 (a veces llamado 0x100000).

Lo siento, para responder una pregunta con otra pregunta …

¿No está el número de direcciones disponibles dentro de un rango establecido que incluye también esos limitadores de rango?
p. ej. (en decimal para ilustrar mi punto) con una dirección de inicio 5 y una dirección final de 10. Con la resta solamente, es decir, la dirección final menos la dirección de inicio (10-5) obtenemos un rango de 5. Pero en realidad hay seis direcciones únicas en el rango, es decir, 5,6,7,8,9,10 (¿entonces deberíamos sumar 1 al resultado de la resta en la pregunta original de Julie?)

También, tamaño de la dirección de memoria versus tamaño de memoria real. ¿Estamos hablando de la cantidad de ubicaciones de memoria individuales o del tamaño de la memoria disponible para almacenar datos (que debe tener en cuenta el tamaño de cada ubicación)?

Si son solo ubicaciones de memoria, entonces casi hemos terminado (creo que esto se conoce como tamaño de dirección de memoria). Solo tengo que resolver la parte MB de la pregunta (llegaré a ese tema al final)

Si es el espacio de almacenamiento disponible, esto debe incluir el tamaño de cada porción direccionable de memoria, por ejemplo, cada ubicación de dirección contiene una porción de datos de tamaño desconocido. Digamos que si es 1 byte (1B) de datos por ubicación de memoria que mi ejemplo anterior significa que el tamaño de la memoria es: 6 (ubicaciones de memoria) multiplicado por 1 Byte (volumen de cada ubicación de memoria) para un tamaño total de memoria de 6B

Entonces, basado en mi lógica, la respuesta a la pregunta original para el rango 1 debe ser 01000000hex (rango1 = FDFF FFFF-FD00 0000 + 1 = 01000000h).

En cuanto al tamaño de la memoria de ese rango, aquí es donde realmente me confundo … Es un número específico de ubicaciones de memoria, es decir, 1000000 h, de un tamaño indeterminado para cada ubicación. Entonces, ¿por qué expresarlo en MB o GB? Si conoce el tamaño de cada ubicación de memoria (y multiplica el número de ubicaciones por el tamaño de cada ubicación, entonces tiene el tamaño de memoria para ese rango y puede expresarlo en forma numérica.

Y mientras estamos en eso, donde realmente me confundo es el uso de MB, GB, etc. A menudo se cita ya que cada prefijo equivale a un múltiplo de 1024, por ejemplo, 1KB = 1024Bytes, 1MB = 1024kB, etc., pero la convención preferida de IEC es basado en el estándar ISO (según mi búsqueda en Google hace un momento) que dice Kilo (kB) = 1000, Mega (MB) = 1000000, etc.

Entonces, dejando a un lado el tamaño desconocido de cada ubicación y convirtiendo 1000000h a decimal, es decir, 16.777.216, la respuesta es:

  • 16 MB (16777216/1024/1024 = 16) SOSPECHO QUE ESTA ES LA RESPUESTA QUE EL MAESTRO ES DESPUÉS
  • 16.777216MB (según los estándares ISO)
  • 16 mebibytes (según la norma conjunta IEC / ISO – IEC 80000-13)

Por cierto, buscar en Google solo me educó (puede tomarse como reciente y parcialmente) sobre kibibytes y mebibytes … si está interesado, consulte https://en.wikipedia.org/wiki/Kilobyte

la ecuación es

second_add - first_add + 1

ejemplo

fdff ffff - fd00 0000 + 1 = 0100 0000 = 2^24 = 2^4 * 2^20 = 16Mbyte [2^20 byte = 1 Mbyte] 
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *