it-swarm.com.de

Was ist der Unterschied zwischen einem Wort und einem Byte?

Ich habe nachgeforscht. Ein Byte besteht aus 8 Bits und ein Wort ist die kleinste Einheit, die im Speicher adressiert werden kann. Die genaue Länge eines Wortes variiert. Was ich nicht verstehe, ist, wozu ein Byte gut ist? Warum nicht 8 Bits sagen?

Ich habe einem Profi diese Frage gestellt und er sagte, dass die meisten Maschinen heutzutage byteadressierbar sind, aber was würde das für ein Wort bedeuten?

79
user796388

Byte : Ein Byte besteht heute fast immer aus 8 Bit. Dies war jedoch war nicht immer der Fall und es gibt keinen "Standard" oder etwas, das dies diktiert. Da 8 Bit eine bequeme Nummer ist, um damit zu arbeiten, wurde es de facto zum Standard.

Wort : Das natürliche Größe, mit der ein Prozessor Daten verarbeitet (die Registergröße). Die heute am häufigsten anzutreffenden Wortgrößen sind 8, 16, 32 und 64 Bit, andere Größen sind jedoch möglich. Zum Beispiel gab es einige 6-Bit-Maschinen oder sogar 12-Bit-Maschinen .

Das Byte ist die kleinste adressierbare Einheit für eine CPU. Wenn Sie einzelne Bits setzen/löschen möchten, müssen Sie zuerst das entsprechende Byte aus dem Speicher abrufen, mit den Bits herumspielen und dann das Byte zurück in den Speicher schreiben.

Das Wort ist im Gegensatz dazu der größte Teil der Bits, mit denen ein Prozessor gleichzeitig eine Verarbeitung (wie Addition und Subtraktion) durchführen kann. Diese Definition ist etwas unscharf, da einige Prozessoren unterschiedliche Wortgrößen für unterschiedliche Aufgaben haben können (z. B. Ganzzahl- oder Gleitkommaverarbeitung). Die Wortgröße ist das, womit die Mehrheit von Operationen arbeiten.

Es gibt auch einige Prozessoren mit einer anderen Zeiger Größe: Der 8086 ist beispielsweise ein 16-Bit-Prozessor, was bedeutet, dass seine Register 16 Bit breit sind. Seine Zeiger (Adressen) sind jedoch 20 Bit breit und wurden durch eine bestimmte Kombination von zwei 16-Bit-Registern berechnet.

143
DarkDust

Was ich nicht verstehe, ist, wozu ein Byte gut ist? Warum nicht 8 Bits sagen?

Abgesehen von dem technischen Aspekt, dass ein Byte nicht unbedingt aus 8 Bits besteht, liegt der Grund für die Verwendung eines Begriffs in der einfachen menschlichen Natur:

  • wirtschaftlichkeit des Aufwands (aka Faulheit) - es ist einfacher "Byte" statt "acht Bits" zu sagen

  • tribalismus - Gruppen von Menschen mögen Jargon/eine private Sprache, um sie von anderen zu unterscheiden.

Nur mit dem Strom schwimmen. Sie werden 50+ Jahre der angesammelten IT-Terminologie und des kulturellen Gepäcks nicht ändern, indem Sie sich darüber beschweren.


FWIW - Der korrekte Begriff, der verwendet wird, wenn Sie "8 Bits unabhängig von der Hardwarearchitektur" meinen, lautet "octet".

15
Stephen C

BYTE

Ich versuche, diese Frage aus C++ Perspektive zu beantworten.

Der C++ - Standard definiert "Byte" als "adressierbare Dateneinheit, die groß genug ist, um jedes Mitglied des Basiszeichensatzes der Ausführungsumgebung aufzunehmen."

Dies bedeutet, dass das Byte aus mindestens genügend benachbarten Bits besteht, um den Grundzeichensatz für die Implementierung aufzunehmen. Das heißt, die Anzahl der möglichen Werte muss der Anzahl der unterschiedlichen Zeichen entsprechen oder diese überschreiten. In den USA sind die grundlegenden Zeichensätze normalerweise die Sätze ASCII und EBCDIC, von denen jeder mit 8 Bits belegt werden kann. Daher wird garantiert, dass ein Byte mindestens 8 Bits hat.

Mit anderen Worten ist ein Byte die Menge an Speicher, die zum Speichern eines einzelnen Zeichens erforderlich ist.

Wenn Sie die Anzahl der Bits in Ihrer C++ - Implementierung überprüfen möchten, überprüfen Sie die Datei "limits.h". Es sollte einen Eintrag wie unten haben.

#define CHAR_BIT      8         /* number of bits in a char */

Word

Ein Wort ist als bestimmte Anzahl von Bits definiert, die von der Maschine/dem System zusammen (d. H. In einem Versuch) verarbeitet werden können. Alternativ können wir sagen, dass Word die Datenmenge definiert, die zwischen der CPU und RAM in einer einzigen Operation übertragen werden kann.

Die Hardwareregister in einem Computer haben die Größe von Word. Die Wortgröße definiert auch die größtmögliche Speicheradresse (jede Speicheradresse zeigt auf einen bytegrossen Speicher).

Hinweis - In C++ - Programmen verweist die Speicheradresse auf ein Byte Speicher und nicht auf ein Word.

7
Vaibhav Patle

Warum nicht 8 Bits sagen?

Weil nicht alle Maschinen 8-Bit-Bytes haben. Da Sie dieses C markiert haben, schauen Sie nach CHAR_BIT im limits.h.

6
cnicutar

Ein Wort ist die Größe der Register im Prozessor. Dies bedeutet, dass Prozessoranweisungen wie "Add", "Mul" usw. für Eingaben in Word-Größe gelten.

Die meisten modernen Architekturen verfügen jedoch über Speicher, der in 8-Bit-Blöcken adressierbar ist, sodass die Verwendung des Wortes "Byte" praktisch ist.

5
VoidStar

In diesem Zusammenhang ist ein Word die Einheit, die ein Computer beim Arbeiten mit Speicher verwendet. Auf einer 32-Bit-Maschine ist das Wort beispielsweise 32 Bit und auf einer 64-Bit-Maschine 64 Bit lang. Die Wortgröße bestimmt den Adressraum.

In der Programmierung (C/C++) wird das Word normalerweise durch den Typ int_ptr Dargestellt, der die gleiche Länge wie ein Zeiger hat und auf diese Weise diese Details abstrahiert.

Einige APIs können Sie jedoch verwirren, z. B. die Win32-API, da es Typen wie Word (16 Bit) und DWORD (32 Bit) gibt. Der Grund dafür ist, dass die API ursprünglich auf 16-Bit-Maschinen abzielte und dann auf 32-Bit-Maschinen und dann auf 64-Bit-Maschinen portiert wurde. Um einen Zeiger zu speichern, können Sie INT_PTR Verwenden. Weitere Details hier und hier .

5
npclaudiu

Anscheinend gehen alle Antworten von Hochsprachen und hauptsächlich von C/C++ aus.

Die Frage ist jedoch mit "Assembly" gekennzeichnet und in allen mir bekannten Assemblern (für 8-Bit-, 16-Bit-, 32-Bit- und 64-Bit-CPUs) sind die Definitionen viel klarer:

byte  = 8 bits 
Word  = 2 bytes
dword = 4 bytes = 2Words (dword means "double Word")
qword = 8 bytes = 2Dwords = 4Words ("quadruple Word")
4
johnfound

Unabhängig von der Terminologie in Datenblättern und Compilern besteht ein Byte aus acht Bits. Lassen Sie uns nicht versuchen, Nachforschungen und Allgemeines mit den dunkeleren Ausnahmen zu verwechseln, zumal das Wort "Byte" aus dem Ausdruck "By Eight" stammt. Ich habe über dreißig Jahre in der Halbleiter-/Elektronikindustrie gearbeitet und nicht ein einziges Mal war bekannt, dass "Byte" mehr als acht Bits ausdrückt.

2
Brendan

Die genaue Länge eines Wortes variiert. Was ich nicht verstehe, ist, wozu ein Byte gut ist? Warum nicht 8 Bits sagen?

Obwohl die Länge eines Wortes unterschiedlich ist, ist die Wortgröße auf allen modernen Computern und sogar allen älteren Architekturen, mit denen ich vertraut bin, immer noch ein Vielfaches der Bytegröße. Die Verwendung von "Byte" über "8 Bit" in Bezug auf die variable Wortgröße hat also keinen besonderen Nachteil.

Darüber hinaus gibt es hier einige Gründe, um Byte (oder Oktett) zu verwenden1) über "8 Bits":

  1. Größere Einheiten sind nur praktisch, um sehr große oder sehr kleine Zahlen zu vermeiden: Sie könnten genauso gut fragen: "Warum sagen Sie 3 Nanosekunden, wenn Sie 0,000000003 Sekunden sagen könnten" oder "Warum sagen Sie 1 Kilogramm, wenn Sie 1.000 Gramm sagen könnten" usw.
  2. Abgesehen von der Bequemlichkeit ist die Einheit eines Bytes in gewisser Weise so grundlegend wie 1 Bit da viele Operationen normalerweise nicht auf Byte-Ebene, sondern auf Byte-Ebene ausgeführt werden: Adressieren des Speichers, Zuweisen von dynamischem Speicher, Lesen aus einer Datei oder einem Socket usw.
  3. Selbst wenn Sie "8-Bit" als Einheitentyp verwenden und statt "zwei Bytes" "zwei 8-Bit" sagen würden, wäre es oft sehr verwirrend, wenn Ihre neue Einheit mit einer Zahl beginnt. Wenn zum Beispiel jemand "einhundert 8-Bit" sagt, kann dies leicht als 108 Bit statt als 100 Bit interpretiert werden.

1 Obwohl ich ein Byte für diese Antwort als 8 Bit betrachten werde, ist dies nicht allgemein gültig: Auf älteren Computern kann ein Byte eine andere Größe haben (wie 6 Bits . Oktett bedeutet immer 8 Bits, unabhängig von der Maschine (daher wird dieser Begriff häufig beim Definieren verwendet Netzwerkprotokolle). In der modernen Verwendung wird Byte überwiegend als Synonym für 8 Bit verwendet.

2
BeeOnRope