Estoy trabajando con un microcontrolador Fujitsu y creo que estoy un poco oxidado con los siguientes detalles, por eso hago esta pregunta. Tengo las siguientes especificaciones:
¿Parecen crear mágicamente 12K bytes de memoria ROM adicional? ¿Qué peculiaridad me estoy perdiendo aquí?
Si observa el mapa de memoria, en realidad hay 524,288 bytes de ROM, que son 512K (donde 'K' se refiere a 1024, no a 1000). Por cierto, obtuve eso al restar la dirección de inicio 0xF8000 de la dirección final 0xFFFFFF y agregar uno.
Eso es 4M (donde 'M' es 1024 * 1024 = 1,048,576, no = 1.000.000).
Por lo general, es bastante claro lo que sucede en el contexto, por lo que esto rara vez causa confusión (especialmente cuando parece haber más memoria de la esperada), sin embargo, la capacidad de la unidad de disco del consumidor es un ejemplo notorio del uso de unidades de 'marketing' que hacen que el producto se vea más favorable en alrededor de 5-10%.
Editar: como varios prescriptivistas han mencionado aquí, hay unidades "oficiales" como MiB que deberían eliminar la ambigüedad, sin embargo, dado que prácticamente nadie las usa, creo que probablemente causarían más confusión en la mayoría de los casos (y obviamente los autores de la hoja de datos sintieron de esa manera). La pregunta es sobre interpretar correctamente lo que se escribió en una hoja de datos, no qué terminología debe usar al escribir una hoja de datos usted mismo.
Los primeros ingenieros informáticos optaron por adoptar y adaptar las unidades de prefijo SI a sus recuentos de datos. Estos son los mismos prefijos, pero contando usando binario en lugar de métrico. Dado que 2 ^ 10 está cerca de 10 ^ 3, entonces cada prefijo SI que normalmente aumenta una cantidad en 10 ^ 3 se refiere a un aumento de 2 ^ 10:
Prefix Metric prefix Binary prefix Difference
k kilo 10^3=1,000 2^10=1,024 2.4%
M mega 10^6=1,000,000 2^20=1,048,576 4.9%
G giga 10^9=1,000,000,000 2^30=1,073,741,824 7.4%
T tera 10^12 2^40 10.0%
P peta 10^15 2^50 12.6%
Estos fueron adoptados como parte de los estándares JEDEC.
Esto tiene una serie de ventajas, ya que gran parte del trabajo en este campo se realiza en potencias de 2. Sin embargo, como puede ver, divergen de la métrica y, dado que ahora estamos tratando con grandes cantidades de almacenamiento donde la diferencia entre las dos diverge significativamente, la El problema ha sido tratado por IEC y NIST. Estos diferencian los dos sistemas cambiando el prefijo binario:
Prefix Binary prefix
ki kibi 2^10
Mi mebi 2^20
Gi gibi 2^30
Ti tebi 2^40
Pi pebi 2^50
Estos se estandarizaron por primera vez en 1998 y se adoptaron en el Sistema Internacional de Cantidades en 2008, pero la adopción es lenta y todavía hay empresas que crean nuevos documentos utilizando el estándar anterior. Cuando las empresas han cambiado, han encontrado a los usuarios confundidos y algunos han vuelto al estilo anterior.
Por lo tanto, utilizando el estándar anterior, 4 Mb son 4 * 2 ^ 20 bits, lo que equivale a 512 * 2 ^ 10 bytes.
Representado en el estándar más nuevo, sería 4Mib = 512 kiB, suponiendo que 'b' son bits y 'B' son bytes.
En el contexto de las capacidades de memoria, MB a menudo significa 1024 KB (en lugar de 1000 K). Puede usar MiB para evitar ambigüedades.
El antiguo debate de poderes de 2 vs poderes de 10. Las empresas han perdido millones en juicios por ello. Los prefijos binarios frente a los decimales que hacen que pierdas 24 bits por kilo realmente se suman en gigabits y bytes. Es por eso que mi disco duro de 120 gb (clasificación del fabricante) solo tiene 115,8 gb más o menos (pantalla de la computadora)
http://en.m.wikipedia.org/wiki/Binary_prefix tiene una explicación completa.
Cuando se habla de RAM, ROM o cualquier cosa conectada de alguna manera a los buses de una CPU:
Un kilobit son 1024 bits.
Un megabit son 1024 kilobits.
4 megabits son 4096 kilobits.
4096 kilobits son 4194304 bits.
Un byte son 8 bits.
4194304 bits son 524288 bytes
un kilobyte son 1024 bytes
524288 bytes son 512 kilobytes.
todo es por .
mega
incluidos, son invenciones muy posteriores.Desafortunadamente, la industria informática usa los prefijos kilo y mega de manera inconsistente.
La memoria de semiconductores tiende a tener una potencia de dos tamaños, porque simplifica el mapeo de direcciones. 1024 está cerca de 1000, por lo que aquellos que trabajan con memoria de semiconductores comenzaron a usar kilo para significar 1024. A medida que aumentaba el tamaño de la memoria, también comenzaron a usar mega para significar 1024 2 = 1048576 giga para significar 1024 3 = 1073741824 y así sucesivamente.
Bajo estas definiciones de kilobyte y megabyte, la declaración de su fabricante coincide. 4 megabits binarios equivalen a 4096 kilobits binarios equivalen a 512 kilobytes binarios.
Sin embargo, otras partes de la industria informática, en particular los fabricantes de discos duros y los diseñadores de interfaces de comunicación, utilizaron los prefijos SI en sus significados originales. Los fabricantes de medios flash en forma de disco también tendían a seguir esta convención.
Algunas partes de la industria incluso mezclaron los dos, por ejemplo, un "disquete de 1.44 MB" es en realidad 1.44 * 1000 * 1024 = 1474560 bytes
El IEC trató de arreglar el lío en 1998 introduciendo nombres y simbología específicos para los prefijos binarios, los nombres se forman tomando las dos primeras letras del nombre de la unidad SI y agregando "bi", por lo que kilo se convierte en kibi, mega se convierte en mebi y así sucesivamente. Para los símbolos, se agrega una "i", de modo que k se convierte en ki, M se convierte en Mi y así sucesivamente.
Sin embargo, el hecho de que una organización de estándares introduzca terminología no significa que las personas realmente la utilicen. Al menos en mi experiencia, todavía es mucho más común ver kilo, mega, etc. en un sentido binario que ver kibi, mebi, etc.
Como todos los demás ya han explicado, es probable que estés sufriendo un hackeo de hace medio siglo por parte de IEC et al, que continúa generando una gran confusión. En lugar de introducir una nueva unidad de la misma dimensionalidad (o un prefijo), redefinieron el significado de otra unidad ampliamente utilizada (prefijo), al mismo tiempo que no pudieron establecer claramente qué definición se aplica en qué contexto.
En caso de su problema específico, simplemente inspeccione los mapas de memoria como se mencionó.
Sin embargo, les insto a que reconozcan un problema mucho más general.
El problema es que decir 123 kB
no conduce de forma fiable a una comprensión clara por parte del destinatario.
Este es un legado lingüístico y una deficiencia importante de la API del vocabulario CS.
¿Qué podemos hacer para solucionar eso?
Bueno, adivina qué: usa prefijos binarios .
El significado de 123 kiB
es 100% confiablemente claro.
El significado de 123 kiB (126.0 kB)
es aún mejor.
No es necesario ser un historiador de CS solo para transmitir algunos números importantes a alguien.
A nadie le importan las empresas, los discos duros, los organismos de estandarización, las declaraciones de desaprobación, etc., etc.
Que no vale la pena. Solo usa los mebibytes binarios. Son inequívocos .
Hay gente que lo ha estado diciendo con éxito 32 kibihertz
en el 2002. Se les ha escuchado. Sorprendentemente conveniente, ¿eh?
Finalmente, si se niega a aceptar los prefijos binarios, empeora el problema.
La única estrategia con la que todos podemos cooperar para desescalar y corregir ese maldito error lingüístico es desaprobar la ambigüedad y cambiar a kibi... segundos (¿por qué no?) y otras unidades bi.
Juan Dvorak
Evert
fgb
njzk2
usuario
B
yb
. Lo que dice el título es en realidad "4 megabit != 512 kilobit?", lo que por supuesto no tiene sentido. Lo que quería es4 Mbit != 512 KB?
cuál tiene más sentido, dependiendo de si está usando prefijos binarios o decimales.ulidtko