Ich arbeite mit einem Fujitsu-Mikrocontroller und glaube, ich bin in den folgenden Details etwas eingerostet, deshalb stelle ich diese Frage. Ich habe folgende Spezifikationen:
Sie scheinen auf magische Weise 12 KB zusätzlichen ROM-Speicher zu erstellen? Welche Macke übersehe ich hier?
Wenn Sie sich die Speicherkarte ansehen, gibt es tatsächlich 524.288 Bytes ROM, was 512 KB entspricht (wobei „K“ auf 1024 und nicht auf 1000 verweist) – übrigens, ich habe das bekommen, indem ich die Startadresse 0xF8000 von der Endadresse 0xFFFFFF subtrahiert und addiert habe einer.
Das sind 4M (wobei „M“ 1024 * 1024 = 1.048.576 ist, nicht = 1.000.000).
Aus dem Kontext geht normalerweise ziemlich klar hervor, was vor sich geht, sodass dies selten zu Verwirrung führt (insbesondere wenn mehr Speicher als erwartet vorhanden zu sein scheint). Die Festplattenkapazität von Verbrauchern ist jedoch ein berüchtigtes Beispiel für die Verwendung von „Marketing“ -Einheiten , die das Produkt besser aussehen lassen günstig um ca. 5-10%.
Bearbeiten: Wie verschiedene Präskriptivisten hier erwähnt haben, gibt es "offizielle" Einheiten wie MiB, die die Mehrdeutigkeit beseitigen sollten, aber da praktisch niemand sie verwendet, denke ich, dass sie in den meisten Fällen wahrscheinlich mehr Verwirrung stiften würden (und offensichtlich fühlten sich die Autoren des Datenblatts dieser Weg). Die Frage ist , was in einem Datenblatt geschrieben steht, und nicht, welche Terminologie Sie verwenden sollten, wenn Sie selbst ein Datenblatt schreiben.
Die frühen Computeringenieure entschieden sich dafür , SI-Präfixeinheiten zu übernehmen und an ihre Datenzahlen anzupassen. Dies sind die gleichen Präfixe, aber die Zählung erfolgt binär statt metrisch. Da 2 ^ 10 nahe bei 10 ^ 3 liegt, bezieht sich jedes SI-Präfix, das normalerweise einen Betrag um 10 ^ 3 erhöht, stattdessen auf eine Erhöhung von 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%
Diese wurden als Teil der JEDEC-Standards übernommen.
Dies hat eine Reihe von Vorteilen, da viel Arbeit in diesem Bereich in Potenzen von 2 stattfindet. Wie Sie jedoch sehen können, weichen sie von der Metrik ab, und da wir es jetzt mit größeren Speichermengen zu tun haben, weicht der Unterschied zwischen den beiden erheblich ab Problem wurde von IEC und NIST behandelt. Diese unterscheiden die beiden Systeme, indem sie das binäre Präfix ändern:
Prefix Binary prefix
ki kibi 2^10
Mi mebi 2^20
Gi gibi 2^30
Ti tebi 2^40
Pi pebi 2^50
Diese wurden erstmals 1998 standardisiert und 2008 in das Internationale System der Mengen übernommen, aber die Übernahme ist langsam, und es gibt immer noch Unternehmen, die neue Dokumente unter Verwendung des alten Standards erstellen. Wo Unternehmen umgestiegen sind, haben sie festgestellt, dass die Benutzer verwirrt sind und einige zum älteren Stil zurückgekehrt sind.
Unter Verwendung des älteren Standards sind 4 MB also 4 * 2 ^ 20 Bits, was 512 * 2 ^ 10 Bytes entspricht.
Im neueren Standard dargestellt, wäre es stattdessen 4 Mib = 512 kiB, vorausgesetzt, dass „b“ Bits und „B“ Bytes sind.
Im Zusammenhang mit Speicherkapazitäten bedeutet MB oft 1024KB (statt 1000K). Sie können MiB verwenden, um Mehrdeutigkeiten zu vermeiden.
Die uralten Potenzen von 2 gegen Potenzen von 10 debattieren. Unternehmen haben deswegen Millionen in Klagen verloren. Binäre vs. dezimale Präfixe, die dazu führen, dass Sie 24 Bit pro Kilo verlieren, summieren sich wirklich zu Gigabits und Bytes. Deshalb hat meine 120-GB-Festplatte (Herstellerangabe) nur etwa 115,8 GB (Computeranzeige)
http://en.m.wikipedia.org/wiki/Binary_prefix hat eine vollständige Erläuterung.
Wenn es um RAM, ROM oder irgendetwas geht, das in irgendeiner Weise mit den Bussen einer CPU verbunden ist:
Ein Kilobit sind 1024 Bit.
Ein Megabit sind 1024 Kilobit.
4 Megabit sind 4096 Kilobit.
4096 Kilobit sind 4194304 Bit.
Ein Byte sind 8 Bit.
4194304 Bit sind 524288 Byte
Ein Kilobyte sind 1024 Byte
524288 Byte sind 512 Kilobyte.
Es ist alles wegen .
mega
einschließlich - viel spätere Erfindungen sind.Leider verwendet die Computerindustrie die Kilo- und Mega-Präfixe uneinheitlich.
Halbleiterspeicher sind in der Regel in Potenzen von zwei Größen erhältlich, da dies die Adresszuordnung einfacher macht. 1024 ist fast 1000, also begannen diejenigen, die mit Halbleiterspeichern arbeiteten, Kilo zu verwenden, um 1024 zu bedeuten. Als die Speichergrößen größer wurden, begannen sie auch, Mega zu verwenden, um 1024 2 = 1048576 Giga zu bedeuten, um 1024 3 = 1073741824 zu bedeuten und so weiter.
Unter diesen Definitionen von Kilobyte und Megabyte stimmt Ihre Herstellerangabe überein. 4 binäre Megabit entsprechen 4096 binären Kilobit entsprechen 512 binären Kilobyte.
Andere Teile der Computerindustrie, insbesondere Festplattenhersteller und Entwickler von Kommunikationsschnittstellen, verwendeten die SI-Präfixe jedoch in ihrer ursprünglichen Bedeutung. Auch Hersteller von festplattenähnlichen Flash-Medien tendierten dazu, dieser Konvention zu folgen.
Einige Teile der Industrie haben die beiden sogar gemischt, zum Beispiel ist eine "1,44-MB-Diskette" tatsächlich 1,44 * 1000 * 1024 = 1474560 Bytes
Die IEC versuchte 1998, das Durcheinander zu beheben, indem sie spezifische Namen und Symbole für die binären Präfixe einführte. Die Namen werden gebildet, indem die ersten beiden Buchstaben des Namens der SI-Einheit genommen und "bi" angehängt werden, also wird Kilo zu Kibi, Mega wird mebi und so weiter. Für die Symbole wird ein „i“ hinzugefügt, sodass k zu ki wird, M zu Mi und so weiter.
Aber nur weil eine Normungsorganisation eine Terminologie einführt, heißt das noch lange nicht, dass sie tatsächlich verwendet wird. Zumindest nach meiner Erfahrung ist es immer noch weitaus üblicher, Kilo, Mega usw. im binären Sinne zu sehen, als Kibi, Mebi usw.
Wie alle anderen bereits erklärt haben, leiden Sie wahrscheinlich unter einem ein halbes Jahrhundert alten Hack von IEC et al., der weiterhin massive Verwirrung stiftet. Anstatt eine neue Einheit derselben Dimensionalität (oder ein Präfix) einzuführen, haben sie die Bedeutung einer anderen weit verbreiteten Einheit (Präfix) neu definiert , ohne klar festzulegen, welche Definition in welchem Kontext gilt.
Im Falle Ihres spezifischen Problems überprüfen Sie einfach die Speicherzuordnungen wie erwähnt.
Ich fordere Sie jedoch dringend auf, ein weitaus allgemeineres Problem zu erkennen.
Das Problem ist, dass das Sagen 123 kB
auf der Empfängerseite nicht zuverlässig zu einem glasklaren Verständnis führt.
Dies ist ein linguistisches Erbe und ein wesentlicher API-Mangel des CS-Vokabulars.
Was können wir tun, um das zu lösen?
Nun, raten Sie mal: Verwenden Sie binäre Präfixe .
Bedeutung von 123 kiB
ist 100% zuverlässig glasklar.
Die Bedeutung von 123 kiB (126.0 kB)
ist sogar noch besser.
Sie müssen kein CS -Historiker sein, nur um jemandem ein paar große Zahlen zu vermitteln.
Niemand kümmert sich um Unternehmen, Festplatten, Standardisierungsgremien, Abwertungserklärungen und so weiter und so weiter.
Es lohnt sich nicht. Verwenden Sie einfach die binären Mebibytes. Sie sind eindeutig.
Es gibt Leute, die haben 2002 erfolgreich gesagt 32 kibihertz
. Sie wurden gehört. Erstaunlich bequem, oder?
Wenn Sie sich schließlich weigern, binäre Präfixe zu akzeptieren, verschlimmern Sie das Problem.
Die einzige Strategie, mit der wir alle kooperieren können, um diesen verdammten Sprachfehler zu deeskalieren und zu beheben, besteht darin, Mehrdeutigkeiten abzulehnen und auf Kibi ... Sekunden (warum nicht?) Und andere Zweieinheiten umzuschalten.
John Dvorak
Evert
fgb
njzk2
Benutzer
B
und gibtb
. Was der Titel sagt, ist wirklich "4 Megabit != 512 Kilobit?", was natürlich keinen Sinn ergibt. Was Sie wollten4 Mbit != 512 KB?
, ist sinnvoller, je nachdem, ob Sie binäre oder dezimale Präfixe verwenden.ulidtko