Ich finde mehrere Quellen, die behaupten, dass die Zweierpotenz in einem Binärwort (z. B. 8 Bit pro Byte) eine "gute Sache" oder "praktisch" ist. Ich finde keine Quelle, die darauf hinweist, warum.
Aus Wie ist die Geschichte, warum Bytes acht Bits sind? Wir lesen in der genehmigten Antwort:
Binäre Computer motivieren Designer, Größen mit zwei Potenzen zu erstellen.
OK, aber warum? In der gleichen Frage, aber im Kommentarfeld für die Frage finde ich:
Ist der letzte Satz im Scherz? Ein 12-Bit-Byte wäre unpraktisch, da es keine Potenz von 2 ist. - robjb
Wieder ohne Begründung ...
Adressberechnungen sind mit Zweierpotenzen viel einfacher, und das zählt, wenn Sie aus rohen Transistoren in kleinen Dosen Logik machen - Mike
Da Bytes die kleinste adressierbare Einheit sind, ist dies wenig sinnvoll. Viele positive Stimmen zu dem Kommentar. Vielleicht habe ich etwas verpasst.
Aus Wikipedia :
Der De-facto-Standard von acht Bits ist eine bequeme Zweierpotenz, die die Werte 0 bis 255 für ein Byte zulässt
Und das wäre praktisch, weil ...?
Zur Verdeutlichung handelt es sich hierbei um die Anzahl der Bits pro Byte (z. B. 8 oder 6 usw.), nicht um die Anzahl der Werte pro Byte (z. B. 2 8 oder 2 6 usw.). Aufgrund der Verwirrung weise ich auch darauf hin, dass es nicht um Wortgrößen geht.
Historische Gründe interessieren mich nicht sonderlich. Diese wurden an anderer Stelle gut erklärt (siehe Links).
Verwandte Frage zu SO: /programming/1606827/why-is-number-of-bits-always-a-power-of-two
Antworten:
Ich glaube nicht, dass 8-Bit-Bytes erfolgreich waren, weil sie eine Breite haben, die eine Zweierpotenz ist. Wenn Sie Bits nicht einzeln ansprechen möchten - und das ist weder jetzt noch in der Vergangenheit üblich -, ist eine Zweierpotenz keine wirkliche praktische Bedeutung (es ist nur - jetzt weit mehr als in der Vergangenheit beim Sparen Einige diskrete Komponenten waren wichtig - ein Reflex für Hardware- und Softwareentwickler und das Bleiben auf vertrauten Grundlagen ist für andere Zwecke wichtig), und ich kann mich nicht erinnern, dass ich dies in meiner Geschichte der Computerablesungen erwähnt habe (1). Man brauchte Kleinbuchstaben, das bedeutete etwas mehr als die damals dominanten 6-Bit-Zeichensätze. ASCII war 7-Bit, aber ASCII war dann allerdings nur für den Austausch gedacht (und somit zur Behandlung in internen Code übersetzt zu werden), und somit
und für die Hardware 8-Bit-Byte gewonnen, weil es erlaubt war, 2 Dezimalstellen in einem Byte zu einem Zeitpunkt zu packen, als 75% der Daten numerisch waren und in BCD dargestellt wurden (3).
(1) zum Beispiel Blaauw und Brooks, Computer Architecture ; MacKenzie, Coded Character Sets, History und Development diskutieren beide zu diesem Thema.
(3) Dokument von X3.2 - dem für ASCII zuständigen Unterausschuss - zitiert von MacKenzie.
(3) Wieder MacKenzie.
quelle
Abgesehen von einem historischen Unfall gibt es keinen besonderen Grund, warum wir 8/16/32/64 Bit verwenden sollten. Ich nehme an, dass 12/24/48/96 Bit wirklich nützlicher wäre.
Für die Verarbeitung von Text wäre Unicode mit einem hypothetischen UTF-24 billiger als UTF32. Das hypothetische UTF-12 würde alle Einzel- und Doppelbyte-UTF-8-Zeichen in 12 Bit und alle Dreifach- und Vierfachbyte-UTF-8-Zeichen in 24 Bit speichern (der Bereich würde leicht auf 2 ^ 20 Zeichen reduziert, aber das ist immer noch viermal mehr als großzügig genutzt wird); Code wäre einfacher, da es nur zwei Varianten gibt.
Für Gleitkommazahlen reichen normalerweise 48 Bit aus. 96 Bit ist wesentlich besser als 80 Bit erweitert. 24 Bit ist nützlich für Grafiken; viel nützlicher als das 16-Bit, das von einigen Grafikkarten unterstützt wird. 48-Bit-Zeiger können 256 Terabyte verarbeiten.
Der einzige Nachteil sind Bit-Arrays, bei denen eine Division durch 12 erforderlich ist, um die Byte-Positionen zu berechnen. Wenn dies als wichtig erachtet wird, kann die Division durch 12 sicher recht effizient in Hardware implementiert werden.
quelle
Dies ist aufgrund gängiger Hardwarearchitekturen mit Vielfachen von 8, z. B. 32-Bit- und 64-Bit-Architekturen, praktisch. Dies bedeutet eine höhere Effizienz bei der Verwendung von 8-Bit-Datenspeicherung und -übertragung.
"Wirtschaftliche Überlegungen im Design drängen jedoch stark auf eine Größe oder sehr wenige Größen, die durch Vielfache oder Brüche (Submultiplikatoren) mit einer Primärgröße in Beziehung stehen. Diese bevorzugte Größe wird zur Wortgröße der Architektur."
Word (Computerarchitektur)
Siehe auch: Wie ist die Geschichte, warum Bytes acht Bits sind?
quelle
2⁸-1
.Laut Wikipedia-Artikel für Wort erleichtert dies die Berechnung des Adressierungsspeichers erheblich:
quelle
Es ist eng mit dem Adressraum verbunden. Durch Hinzufügen eines Bit mehr zu Ihrem Adressbus können Sie doppelt so viele Speicherplätze adressieren. Wenn Sie diese zusätzliche Zeile hinzufügen, können Sie sie auch in vollem Umfang verwenden.
Dies führt zu einem natürlichen Verlauf von 1, 2, 4, 8, 16, 32 usw.
Auf produktionstechnischer Ebene ist es auch einfach, dasselbe lithografische Muster zu wiederholen. Das heißt, es zu verdoppeln. Wenn Sie mit einem Latch beginnen und dann das Muster verdoppeln, passieren Sie 8, nicht 6, 10 oder 12.
quelle
Wortbreiten sind nicht immer eine Zweierpotenz. Ich habe kürzlich einige Codierungen in einem SHArC-DSP durchgeführt, der eine Wortbreite von 32 Bit für Zahlen hat, jedoch nicht für die Opcodes (die 48 Bit breit sind).
Wahrscheinlich liegt der Grund dafür, dass Wortbreiten eine Zweierpotenz sind, in einigen Anweisungen, die ein einzelnes Bit testen (oder setzen oder löschen oder umschalten) oder um eine bestimmte Anzahl von Bits nach links oder rechts verschieben (oder drehen). Der Opcode enthält ein Bitfeld, um die Position des einzelnen Bits oder die Anzahl der zu verschiebenden Bits anzugeben. Wenn die Wortbreite eine Zweierpotenz ist, benötigt dieses Bitfeld log 2 (word_width) Bits, um das gesamte Wort abzudecken. Das heißt, ein Wort mit einer Breite von 32 Bit benötigt für diese Operationen ein 5-Bit-Feld im Opcode. Wenn das Wort 33 Bit breit wäre, würde es 6 benötigen, sonst könnte es nicht das gesamte Wort abdecken, aber das wäre auch der Fall, wenn das Wort 64 Bit breit wäre.
Bits in einem Opcode sind äußerst wertvoll, daher möchten sie sie normalerweise nicht verschwenden. Dann ist es sinnvoll, das Wort zu einer Potenz von 2 zu machen.
Der Grund, warum Bytes 8 Bit breit sind, ist, dass es die kleinste Zweierpotenz ist, die ein ASCII-Zeichen enthalten kann (dh 7 Bit).
quelle