Endianness

In der Computerwissenschaft, der Begriff endian oder endianness bezieht sich auf die Einrichtung individuell addressable Teilelemente innerhalb der Darstellung eines größeren Datenartikels, der so im Außengedächtnis (oder, manchmal, wie vorausgeschickt, eine Serienverbindung) versorgt ist. Jedes Teilelement in der Darstellung hat einen einzigartigen Grad der Bedeutung wie der Platz-Wert von Ziffern in einer Dezimalzahl. Diese Teilelemente sind normalerweise 16-, 32- oder 64-Bit-Wörter, 8-Bit-Bytes oder sogar Bit. Endianness ist ein Unterschied in der Datendarstellung am Hardware-Niveau, und können, oder kann an höheren Niveaus abhängig von Faktoren wie der Typ der hohen verwendeten Sprache nicht durchsichtig sein.

Die allgemeinsten Fälle beziehen sich darauf, wie Bytes innerhalb eines einzelnen 16-, 32-, oder 64-Bit-Wortes bestellt werden, und endianness dann dasselbe als Byte-Ordnung ist. Die übliche Unähnlichkeit ist, ob das bedeutendste oder am wenigsten bedeutende Byte zuerst — d. h., an der niedrigsten Byte-Adresse — innerhalb des größeren Datenartikels bestellt wird. Eine große-endian Maschine versorgt das bedeutendste Byte zuerst, und wenig-endian Maschine versorgt das am wenigsten bedeutende Byte zuerst. In diesen Standardformen bleiben die Bytes bestellt durch die Bedeutung. Jedoch sind Mischformen auch möglich, wo sich die Einrichtung von Bytes innerhalb eines 16-Bit-Wortes von der Einrichtung von 16-Bit-Wörtern innerhalb eines 32-Bit-Wortes zum Beispiel unterscheiden kann. Obwohl selten, bestehen solche Fälle wirklich und können manchmal Misch-Endian oder Mitte-endian genannt werden.

Endianness ist als ein auf niedriger Stufe Attribut eines besonderen Datenformats wichtig. Zum Beispiel ist die Ordnung, in der die zwei Bytes eines UCS-2 Charakters im Gedächtnis versorgt werden, von beträchtlicher Wichtigkeit in der Netzprogrammierung, wo zwei Computer mit verschiedenen Byte-Ordnungen mit einander kommunizieren können. Misserfolg, für ein Verändern endianness über Architekturen verantwortlich zu sein, wenn er Code für Mischplattformen schreibt, führt zu Misserfolgen und Programmfehlern, die schwierig sein können zu entdecken.

Der Begriff endian, wie auf Ende zurückzuführen gewesen ist, kann zu Verwirrung führen. Bemerken Sie, dass es anzeigt, welches Ende (d. h., äußerster Teil) der Zahl zuerst kommt, aber nicht welcher Teil am Ende der Byte-Folge kommt (die Zahl vertretend). Sieh Etymologie für eine Erklärung, warum sie sich auf das Ende bezieht, von dem etwas anfängt, aber nicht zu etwas, letzt kommend.

Endianness und Hardware

Die volle Register-Breite unter verschiedenen Zentraleinheiten und anderen Verarbeiter-Typen ändert sich weit (normalerweise zwischen 4 und 64 Bit). Das innere Bit - Byte - oder Worteinrichtung innerhalb solch eines Registers wird normalerweise als "endianness" nicht betrachtet, ungeachtet der Tatsache dass einige Zentraleinheitsinstruktionen individuelle Bit (oder andere Teile) das Verwenden verschiedener Arten von inneren Wenden-Schemas richten können. Der "endianness" beschreibt nur, wie die Bit, wie gesehen, von außen (d. h., wenn versorgt, im Gedächtnis) organisiert werden. Die Tatsache, dass einige Zusammenbau-Sprachen Bit auf eine unorthodoxe Weise etikettieren, ist auch größtenteils eine andere Sache (einige Architekturen/Monteure drehen das herkömmliche andersherum, so dass).

Große ganze Zahlen werden gewöhnlich im Gedächtnis als eine Folge von kleineren versorgt und durch die einfache Verkettung erhalten. Die einfachen Formen sind:

  • die Erhöhung numerischer Bedeutung mit zunehmenden Speicheradressen (oder die Erhöhung der Zeit), bekannt als wenig-endian, und
  • das Verringern numerischer Bedeutung mit zunehmenden Speicheradressen (oder die Erhöhung der Zeit), bekannt als großer-endian

Wohl bekannte Verarbeiter-Architekturen, die wenig-endian Format verwenden, schließen x86 (einschließlich x86-64), 6502 (einschließlich 65802, 65C816), Z80 (einschließlich Z180, eZ80 usw.), MCS-48, 8051, Alpha im DEZ, Altera Nios, Atmel AVR, SuperH, VAX, und, größtenteils, PDP-11 ein.

Wohl bekannte Verarbeiter, die das große-endian Format verwenden, schließen Motorola 6800 und 68k, Xilinx Mikroflamme, IBM POWER, und System/360 und seine Nachfolger wie System/370, ESA/390 und z/Architecture ein. Der PDP-10 hat auch das große-endian Wenden für byteorientierte Instruktionen verwendet. SPARC hat historisch groß-endian bis zur Version 9 verwendet, die bi-endian ist, ähnlich war die ARM-Architektur wenig-endian vor der Version 3, als es bi-endian geworden ist, und die PowerPC und Macht-Architektur-Nachkommen von IBM POWER sind auch bi-endian (sieh unten).

Serienprotokolle können auch entweder als wenig oder als groß-endian am Bit - und/oder Byte-Niveaus betrachtet werden (der sich unterscheiden kann). Viele Serienschnittstellen, wie allgegenwärtiger USB, sind wenig-endian am Bit-Niveau. Physische Standards wie RS-232, RS-422 und RS-485 werden auch normalerweise mit UARTs verwendet, die das am wenigsten bedeutende Bit zuerst, solcher als in Industrieinstrumentierungsanwendungen senden, Protokolle (DMX512) und so weiter anzündend. Dasselbe konnte für aktuelle Digitalschleife-Signalsysteme wie MIDI gesagt werden. Es gibt auch mehrere Serienformate, wohin das bedeutendste Bit normalerweise zuerst, wie I²C und der zusammenhängende SMBus gesandt wird. Jedoch kann die Bit-Ordnung häufig umgekehrt werden (oder ist "durchsichtig") in der Schnittstelle zwischen dem UART oder dem Nachrichtenkontrolleur und der Gastgeber-Zentraleinheit oder dem DMA Kontrolleur (und/oder Systemgedächtnis), besonders in komplizierteren Systemen und Personalcomputern. Diese Schnittstellen können jedes Typs sein und sind häufig konfigurierbar.

Bi-endian Hardware

Einige Architekturen (einschließlich ARM-Versionen 3 und oben, PowerPC, Alpha, SPARC V9, MIPS, PAPA-RISC und IA-64) zeigen eine Einstellung, die schaltbaren endianness in Datensegmenten, Codesegmenten oder beiden berücksichtigt. Diese Eigenschaft kann Leistung verbessern oder die Logik vereinfachen, Geräte und Software zu vernetzen. Das Wort bi-endian, wenn gesagt, von der Hardware, zeigt die Fähigkeit zur Maschine an, Daten in irgendeinem Endian-Format zu schätzen oder zu passieren.

Viele dieser Architekturen können über die Software geschaltet werden, um zu einem spezifischen Endian-Format im Verzug zu sein (gewöhnlich getan, wenn der Computer aufspringt); jedoch auf einigen Systemen wird der Verzug endianness durch die Hardware auf der Hauptplatine ausgewählt und kann über die Software nicht geändert werden (z.B, das Alpha, das nur in der großen-endian Weise auf dem Cray T3E führt).

Bemerken Sie, dass sich der Begriff "bi-endian" in erster Linie darauf bezieht, wie ein Verarbeiter Datenzugänge behandelt. Instruktionszugänge (Abrufe von Instruktionswörtern) auf einem gegebenen Verarbeiter können noch einen festen endianness annehmen, selbst wenn Datenzugänge völlig bi-endian sind, obwohl das nicht immer der Fall, solcher als auf dem IA-64-based von Intel Itanium Zentraleinheit ist, die beiden erlaubt.

Bemerken Sie auch, dass einige nominell bi-endian Zentraleinheiten verlangen, dass Hauptplatine-Hilfe endianness völlig schaltet. Zum Beispiel die 32 Bit tischorientierte Verarbeiter von PowerPC in wenig-endian der Weise-Tat als wenig-endian aus dem Gesichtswinkel von den Durchführungsprogrammen, aber verlangen sie, dass die Hauptplatine einen 64-Bit-Tausch über alle 8-Byte-Gassen durchführt, um sicherzustellen, dass wenig-endian die Ansicht von Dingen für Eingabe/Ausgabe-Geräte gelten wird. Ohne diese ungewöhnliche Hauptplatine-Hardware, Gerät-Treiber muss Software verschiedenen Adressen schreiben, um die unvollständige Transformation aufzumachen, und muss auch einen normalen Byte-Tausch durchführen.

Einige Zentraleinheiten, wie viele für den eingebetteten Gebrauch beabsichtigte Verarbeiter von PowerPC, erlauben proseitigen Wahl von endianness.

Schwimmpunkt und endianness

Obwohl der allgegenwärtige x86 heute des Gebrauches wenig-endian Lagerung für alle Typen von Daten (ganze Zahl, Punkt, BCD schwimmen lassend), es einige historische Maschinen gegeben hat, wo Schwimmpunkt-Zahlen in der großen-endian Form vertreten wurden, während ganze Zahlen in wenig-endian der Form vertreten wurden. Weil es viele Schwimmpunkt-Formate ohne "Netz"-Standarddarstellung für sie gegeben hat, gibt es keinen formellen Standard, um Schwimmpunkt-Werte zwischen heterogenen Systemen zu übertragen. Es kann deshalb sonderbar scheinen, dass der weit verbreitete IEEE 754 Schwimmpunkt-Standard endianness nicht angibt. Theoretisch bedeutet das, dass sogar normaler IEEE, der durch eine Maschine geschriebene Punkt-Daten schwimmen lässt, durch einen anderen nicht lesbar sein könnte. Jedoch, auf modernen Standardcomputern (d. h., IEEE 754 durchführend), kann man in der Praxis sicher annehmen, dass der endianness dasselbe ist, um Punkt-Zahlen bezüglich ganzer Zahlen schwimmen zu lassen, die unabhängig vom Datentyp aufrichtige Konvertierung machend. (Kleine eingebettete Systeme mit speziellen Schwimmpunkt-Formaten können eine andere Sache jedoch sein.)

Endianness und Betriebssysteme auf Architekturen

Wenig-endian (Betriebssysteme mit Architekturen auf Wenig Endian):

  • DragonFlyBSD auf x86 und x86-64
  • FreeBSD auf x86, x86-64, und Itanium
  • Linux auf x86, x86-64, MIPSEL, Alpha, Itanium, S+core, MN103, CRIS, Blackfin, MicroblazeEL, ARM, M32REL, ZIEGEL, SCH, XtensaEL und UniCore32
  • Mac OS X auf x86, x86-64
  • EIN/AUSGABE-STEUERSYSTEM auf dem ARM
  • NetBSD auf x86, x86-64, Itanium, usw.
  • OpenBSD auf x86, x86-64, Itanium, usw.
  • OpenVMS auf VAX, Alpha und Itanium
  • Solaris auf x86, x86-64, PowerPC
  • Tru64 UNIX auf dem Alpha
  • ESX auf x86, x86-64
  • Windows auf x86, x86-64, Alpha, PowerPC, MIPS und Itanium

Groß-endian (Betriebssysteme mit Architekturen auf Großem Endian):

  • AIX auf der MACHT
  • AmigaOS auf PowerPC und 680x0
  • FreeBSD auf PowerPC und SPARC
  • HP-UX auf Itanium und PA-RISC
  • Linux auf MIPS, SPARC, PAPA-RISC, MACHT, PowerPC, 680x0, ESA/390, z/Architecture, H8, FR-V, AVR32, Mikroflamme, ARMEB, M32R, SHEB und Xtensa.
  • Mac OS auf PowerPC und 680x0
  • Mac OS X auf PowerPC
  • NetBSD auf PowerPC, SPARC, usw.
  • OpenBSD auf PowerPC, SPARC, usw.
  • MVS und DOS/VSE auf ESA/390, und z/VSE und z/OS auf z/Architecture
  • Solaris auf SPARC

Etymologie

Der Begriff groß-endian kommt ursprünglich aus dem Reisen des satirischen neuartigen Gullivers von Jonathan Swift über Danny Cohen 1980. 1726 hat Swift Spannungen in Lilliput und Blefuscu beschrieben: Wohingegen die königliche Verordnung im Liliput verlangt, jemandes weich gekochtes Ei am kleinen Ende, den Einwohnern der konkurrierenden Spalte des Königreichs Blefuscu ihriger am großen Ende (das Geben von ihnen der Name Groß-endians) knackend. Die Begriffe wenig-endian und endianness haben eine ähnliche Absicht.

"Auf Heiligen Kriegen und einer Entschuldigung für den Frieden" durch Danny Cohen endet mit: "Der Punkt von Swift ist dass der Unterschied zwischen dem Brechen des Eies

am wenig Ende und Brechen davon am großen Ende ist trivial. Deshalb schlägt er vor, dass jeder es in tut

sein eigener bevorzugter Weg. Wir geben dass der Unterschied zwischen dem Senden von Eiern mit wenig oder das große Ende der erste zu

ist

trivial, aber wir bestehen darauf, dass jeder es ebenso tun muss, um Anarchie zu vermeiden. Da der Unterschied trivialer ist

wir können jeden Weg wählen, aber eine Entscheidung muss getroffen werden."

Geschichte

Das Problem, sich mit Daten in verschiedenen Darstellungen zu befassen, wird manchmal das NUXI Problem genannt. Diese Fachsprache spielt auf das Problem an, dass ein Wert, der durch die Byte-Schnur "UNIX" auf einem großen-endian System vertreten ist, als "NUXI" auf einem PDP-11 mittleren-endian System versorgt werden kann; UNIX war eines der ersten Systeme, um demselben Code zu erlauben, auf, und Übertragungsdaten zwischen, Plattformen mit verschiedenen inneren Darstellungen zu laufen.

Ein häufig zitiertes Argument für den großen-endian ist, dass es mit der auf natürlichen Sprachen allgemein verwendeten Einrichtung im Einklang stehend ist. Sprachen haben ein großes Angebot an Organisationen von Zahlen: Die Dezimalzahl 92 wird in Englisch als zweiundneunzig, auf Deutsch und Niederländisch als zwei und neunzig und in Französisch als vier zwanzig zwölf mit einem ähnlichen System in Dänisch (zwei und vier und eine Hälfte von Zeiten zwanzig) gesprochen. Jedoch werden Zahlen fast allgemein im System der Hinduistischen Arabischen Ziffer geschrieben, in dem die meisten positiven Ziffern zuerst auf Sprachen schriftlich zum Recht nach links, und letzt auf Sprachen schriftliches Recht-zu-link geschrieben werden.

Optimierung

Wenig-endian hat System das Eigentum, dass derselbe Wert auswendig an verschiedenen Längen gelesen werden kann, ohne verschiedene Adressen zu verwenden (selbst wenn Anordnungsbeschränkungen auferlegt werden). Zum Beispiel kann eine 32-Bit-Speicherposition mit dem Inhalt 4A 00 00 00 an derselben Adresse wie beide 8 Bit (Wert = 4A), 16 Bit (004A), 24 Bit (00004A) oder 32 Bit (0000004A) gelesen werden, von denen alle denselben numerischen Wert behalten. Obwohl das wenig-endian Eigentum direkt von Programmierern auf höchster Ebene selten verwendet wird, wird es häufig durch den Code optimizers sowie von Zusammenbau-Sprachprogrammierern verwendet.

Andererseits in einigen Situationen kann es nützlich sein, eine Annäherung eines Mehrbytes oder Mehrwortwerts durch das Lesen von nur seinem die meisten - bedeutender Teil statt der ganzen Darstellung zu erhalten; ein großer-endian Verarbeiter kann solch eine Annäherung mit derselben Grundadresse lesen, die für den vollen Wert verwendet würde.

Berechnungsordnung

Wenig-endian vereinfacht Darstellung Hardware in Verarbeitern, die Mehrbyte integrierte Werte ein Byte auf einmal, wie kleine Verarbeiter des Bytes-addressable und Mikrokontrolleure hinzufügen. Als tragen, muss Fortpflanzung am am wenigsten bedeutenden Bit anfangen (und so Byte), Mehrbyte-Hinzufügung kann dann mit einer monotonischen erhöhenden Adressfolge ausgeführt werden, eine einfache Operation präsentieren bereits in der Hardware. Auf einem großen-endian Verarbeiter muss seine Wenden-Einheit erzählt werden, wie groß die Hinzufügung dabei ist zu sein, so dass sie vorwärts zum am wenigsten bedeutenden Byte hüpfen, dann zählen kann, treten zum bedeutendsten zurück. Jedoch führen hohe Leistungsverarbeiter gewöhnlich diese Operationen als eine einzelne Operation, bezauberndes Mehrbyte operands auswendig in einer einzelnen Operation durch, so dass die Kompliziertheit der Hardware durch die Byte-Einrichtung nicht betroffen wird.

Diagramm, um Register zu Speicherpositionen kartografisch darzustellen

Mit dieser Karte kann man einen Zugang kartografisch darstellen (oder, für ein konkretes Beispiel: "Schreiben Sie 32-Bit-Wert, um 0" zu richten), vom Register bis Gedächtnis oder auswendig sich einzuschreiben. Im Verstehen zu helfen, dass Zugang, wenig und großer endianness im Diagramm als unterscheidend in der Orientierung ihres Koordinatensystems gesehen werden können. Die Atomeinheiten des großen endianness (in diesem Beispiel die Atomeinheit ist das Byte) und Speicherkoordinatensystemzunahmen im Diagramm vom linken bis Recht, während Einheiten von wenig endianness vom Recht bis linken zunehmen.

Eine einfache Gedächtnishilfe ist "In Wenig Endian, Das Am wenigsten bedeutende Byte tritt ins Niedrigste Wertablagefach ein". So im obengenannten Beispiel tritt D, dem am wenigsten bedeutenden Byte, in Ablagefach 0 ein.

Wenn Sie auf einer Westsprache den Hexe-Wert 0x0a0b0c0d schreiben, schreiben Sie die Bytes vom linken bis Recht, Sie schreiben Großen-Endian Stil implizit. 0x0a an 0, 0x0b an 1, 0x0c an 2, 0x0d an 3. Andererseits wird die Produktion des Gedächtnisses normalerweise auch ausgedruckt bytewise vom linken bis das richtige, erste Gedächtnis richten 0, dann Speicheradresse 1, dann Speicheradresse 2, dann Speicheradresse 3. So auf einem Großen-Endian System, wenn Sie einen 32-Bit-Wert (von einem Register) zu einer Adresse im Gedächtnis und nach dieser Produktion das Gedächtnis schreiben, sehen Sie, "was Sie" geschrieben haben (weil Sie den verlassenen am richtigen Koordinatensystem für die Produktion von Werten in Registern sowie die Produktion des Gedächtnisses verwenden). Jedoch auf wenig-Endian System ist die logische 0 Adresse eines Werts in einem Register (für 8 Bit, 16 Bit und 32 Bit) das am wenigsten bedeutende Byte, dasjenige nach rechts. 0x0d an 0, 0x0c an 1, 0x0b an 2, 0x0a an 3. Wenn Sie schreiben, dass ein 32-Bit-Register zu einer Speicherposition auf wenig-Endian System und nach dieser Produktion die Speicherposition schätzt (mit dem Wachsen von Adressen vom linken bis Recht), dann wird die Produktion des Gedächtnisses umgekehrt (Byte-getauscht) scheinen. Sie haben 2 Wahlen jetzt, um die Produktion dessen zu synchronisieren, was Sie als Werte in Registern sehen, und was Sie als Gedächtnis sehen: Sie können die Produktion der Register-Werte tauschen (0x0a0b0c0d => 0x0d0c0b0a), oder Sie können die Produktion des Gedächtnisses (Druck vom Recht bis linken) tauschen. Weil die Werte von Registern als Zahlen interpretiert werden, die auf Westsprachen sind, die vom linken bis Recht geschrieben sind, ist es natürlich, die zweite Annäherung zu verwenden, das Gedächtnis vom Recht bis linken zu zeigen. Das obengenannte Diagramm tut genau, dass, wenn man sich Gedächtnis ("das Denken des Gedächtnisses") auf wenig-Endian System vergegenwärtigt, das Gedächtnis gesehen werden sollte, nach links wachsend.

Beispiele, den Wert im Gedächtnis zu versorgen

:Note, dass hexadecimal Notation verwendet wird.

Um die Begriffe zu illustrieren, stellt diese Abteilung Beispiel-Lay-Outs der 32-Bit-Zahl in den allgemeinsten Varianten von endianness zur Verfügung. Dort bestehen Sie mehrere Digitalverarbeiter, die andere Formate verwenden, aber diese zwei sind in allgemeinen Verarbeitern am üblichsten. Das ist für typische eingebettete Systeme sowie für die allgemeine Computerzentraleinheit (En) wahr. Die meisten Verarbeiter, die in nicht Zentraleinheitsrollen in typischen Computern (in Lagerungseinheiten, Peripherie usw.) auch verwendet sind, verwenden eines dieser zwei grundlegenden Formate, obwohl nicht immer 32 Bit natürlich.

Alle Beispiele beziehen sich auf die Lagerung im Gedächtnis des Werts.

Groß-endian

Atomelement-Größe 8 Bit, Adresserhöhung 1 Byte (Oktett)

Der Wert des bedeutendsten Bytes (MSB), der in unserem Beispiel ist, wird an der Speicherposition mit der niedrigsten Adresse versorgt, der folgende Byte-Wert in der Bedeutung wird an der folgenden Speicherposition und so weiter versorgt. Das ist mit dem zum Recht nach links Lesen in der Hexadecimal-Ordnung verwandt.

Atomelement-Größe 16 Bit

Das bedeutendste Atomelement versorgt jetzt den Wert, der davon gefolgt ist.

Wenig-endian

Atomelement-Größe 8 Bit, Adresserhöhung 1 Byte (Oktett)

Der Wert des am wenigsten bedeutenden Bytes (LSB) ist an der niedrigsten Adresse. Die anderen Bytes folgen in der zunehmenden Ordnung der Bedeutung.

Atomelement-Größe 16 Bit

Die am wenigsten bedeutende 16-Bit-Einheit versorgt den Wert, der sofort davon gefolgt ist. Bemerken Sie, dass und ganze Zahlen, nicht Bit-Lay-Outs vertreten (sieh Bit numerieren).

Byte-Adressen, die vom Recht bis linken zunehmen

Das Vergegenwärtigen von Speicheradressen vom linken bis Recht lässt wenig-endian Werte umgekehrt erscheinen. Wenn die Adressen geschrieben werden, zum verlassenen statt dessen zunehmend, schätzt jede Person wenig-endian wird vorwärts erscheinen. Jedoch scheinen Reihen von Werten oder Charakteren umgekehrt stattdessen.

Mit 8-Bit-Atomelementen:

Der Wert des am wenigsten bedeutenden Bytes (LSB) ist an der niedrigsten Adresse. Die anderen Bytes folgen in der zunehmenden Ordnung der Bedeutung.

Mit 16-Bit-Atomelementen:

Die am wenigsten bedeutende 16-Bit-Einheit versorgt den Wert, der sofort davon gefolgt ist.

Die Anzeige des Textes wird von der normalen Anzeige von Sprachen wie Engländer umgekehrt, die vom linken bis Recht lesen. Zum Beispiel, das Wort "RÖNTGENSTRAHL", der auf diese Weise mit jedem in einem 8-Bit-Atomelement versorgten Charakter gezeigt ist:

Wenn Paare von Charakteren in 16-Bit-Atomelementen versorgt werden (8 Bit pro Charakter verwendend), konnte es noch sonderbarer aussehen:

Dieser Konflikt zwischen den Speichermaßnahmen von binären Daten und dem Text ist zur Natur wenig-endian Tagung inner, aber ist ein Konflikt nur für Sprachen schriftlich zum Recht nach links wie indogermanische Sprachen einschließlich Englisch. Für Sprachen des Rechts-zu-link wie Arabisch und Neuhebräisch gibt es keinen Konflikt des Textes mit der Dualzahl, und die bevorzugte Anzeige würde in beiden Fällen mit Adressen sein, die nach links zunehmen. (Andererseits haben Sprachen des Rechts-zu-link einen inneren Ergänzungskonflikt im großen-endian System.)

Mitte-endian

Viele andere Einrichtung, allgemein genannte Mitte-endian oder Misch-Endian, ist möglich. Auf dem PDP-11 (16 Bit wenig-endian) zum Beispiel hat der Bearbeiter 32-Bit-Werte mit den vom erwarteten halb getauschten 16 Bit versorgt wenig-endian bestellen. Diese Einrichtung ist als PDP-endian bekannt.

  • Lagerung eines 32-Bit-Wortes auf einem PDP-11

Die ARM-Architektur kann auch dieses Format erzeugen, wenn sie ein 32-Bit-Wort einer Adresse 2 Bytes von einer 32-Bit-Wortanordnung schreibt

Segment-Deskriptoren auf Intel 80386 und vereinbaren Verarbeitern halten eine Grund-32-Bit-Adresse des Segmentes versorgt in wenig-endian der Ordnung, aber in vier Nichtkonsekutivbytes, an Verhältnispositionen 2,3,4 und 7 des Deskriptor-Anfangs.

Endianness im Netzwerkanschluss

Viele IETF RFCs verwenden die Begriff-Netzordnung; es beschreibt einfach die Ordnung der Übertragung für Bit und Bytes über die Leitung in Netzprotokollen. Unter anderen erklärt historischer RFC 1700 (auch bekannt als Internetstandard STD 2) diese große Endian-Ordnung.

Das Telefonnetz, historisch und jetzt, sendet den bedeutendsten Teil zuerst, die Vorwahl; das Tun erlaubt so Routenplanung, während eine Telefonnummer zusammengesetzt wird.

Das Internetprotokoll definiert groß-endian als die Standardnetzbyte-Ordnung, die für alle numerischen Werte in den Paket-Kopfbällen und durch viele höhere Niveau-Protokolle und Dateiformate verwendet ist, die für den Gebrauch über IP entworfen werden. Die Steckdose-API von Berkeley definiert eine Reihe von Funktionen, 16-bit- und ganze 32-Bit-Zahlen zu und aus der Netzbyte-Ordnung umzuwandeln: (Gastgeber zum Netz lange) und (Gastgeber, um kurz zu vernetzen), wandeln Funktionen 32-bit- und 16-Bit-Werte beziehungsweise von der Maschine (Gastgeber) zur Netzordnung um; und Funktionen wandeln sich vom Netz um, um Ordnung zu veranstalten. Diese Funktionen können nicht auf einem großen-endian System sein.

Im CANopen Mehrbyte wird Rahmen immer am wenigsten bedeutendes Byte zuerst (wenig endian) gesandt.

Während sich die niedrigsten Netzprotokolle mit Subbyte-Formatierung befassen können, betrachten alle Schichten über ihnen gewöhnlich das Byte (größtenteils als beabsichtigt als Oktett) als ihre Atomeinheit.

Endianness in Dateien und Byte-Tausch

Endianness ist ein Problem, wenn eine binäre auf einem Computer geschaffene Datei auf einem anderen Computer mit verschiedenem endianness gelesen wird. Einige Bearbeiter haben eingebaute Möglichkeiten, sich mit in anderen Formaten geschriebenen Daten zu befassen. Zum Beispiel unterstützt der Bearbeiter von Intel Fortran den umgangssprachlichen specifier, so kann eine Datei als geöffnet werden

:oder:

Einige Bearbeiter haben Optionen, Code zu erzeugen, der allgemein die Konvertierung für die ganze Datei IO Operationen ermöglicht. Das erlaubt dem Wiedergebrauch-Code auf einem System mit dem Gegenteil endianness, ohne den Code selbst modifizieren zu müssen. Wenn der Bearbeiter solche Konvertierung nicht unterstützt, muss der Programmierer die Bytes über den Ad-Hoc-Code tauschen.

Fortran folgende unformatierte Dateien, die mit einem endianness gewöhnlich geschaffen sind, können auf einem System mit dem anderen endianness nicht gelesen werden, weil Fortran gewöhnlich eine Aufzeichnung (definiert als die Daten durchführt, die durch eine einzelne Behauptung von Fortran geschrieben sind) als Daten, ist vorangegangen und ist durch Felder der Zählung erfolgreich gewesen, die ganze Zahlen sind, die der Zahl von Bytes in den Daten gleich sind. Ein Versuch, solche Datei auf einem System des anderen endianness zu lesen, läuft dann auf einen Laufzeitfehler hinaus, weil die Felder der Zählung falsch sind. Dieses Problem kann dadurch vermieden werden, folgende binäre Dateien im Vergleich mit dem unformatierten folgenden auszuschreiben.

Text von Unicode kann mit einem Byte-Ordnungszeichen (BOM) fakultativ anfangen, dem endianness der Datei oder des Stroms Zeichen zu geben. Sein Codepunkt ist U+FEFF. In UTF-32 zum Beispiel sollte eine große-endian Datei damit anfangen. Darin legen wenig-endian diese Bytes ab werden umgekehrt.

Anwendung binäre Datenformate, solcher bezüglich des Beispiels MATLAB.mat Dateien oder das.BIL Datenformat, das in der Topografie verwendet ist, ist gewöhnlich endianness-unabhängig. Das wird durch die Speicherung der Daten immer in einem festem endianness oder das Tragen mit den Daten eines Schalters erreicht, um anzuzeigen, mit welchem endianness die Daten geschrieben wurden. Wenn sie die Datei liest, wandelt die Anwendung den endianness durchsichtig dem Benutzer um.

Das ist von ZANK-Bilddateien der Fall, der in seinem Kopfball über endianness ihrer inneren binären ganzen Zahlen anweist. Wenn eine Datei mit der Unterschrift anfängt, "" bedeutet es, dass ganze Zahlen als groß-endian vertreten werden, während "" wenig-endian bedeutet. Jene Unterschriften brauchen ein einzelnes 16-Bit-Wort jeder, und sie sind Palindrome (d. h. sie lesen dasselbe vorwärts und umgekehrt), so sind sie endianness Unabhängiger. "" tritt für Intel ein, und "" tritt für Motorola, die jeweiligen Zentraleinheitsversorger von IBM PC compatibles und Plattformen der Apple Macintosh in den 1980er Jahren ein. Intel CPUs ist wenig-endian, während Motorola 680x0 Zentraleinheiten groß-endian sind. Diese ausführliche Unterschrift erlaubt einem ZANK-Leser-Programm, Bytes nötigenfalls zu tauschen, als eine gegebene Datei durch ein ZANK-Schriftsteller-Programm erzeugt wurde, das auf einem Computer mit einem verschiedenen endianness läuft.

LabVIEW, Umgebung, obwohl meistens installiert, auf Windows-Maschinen programmierend, wurde zuerst auf einem Macintosh entwickelt, und verwendet Großes Endian-Format für seine Binärzahlen, während die meisten Windows-Programme Wenig Endian-Format verwenden.

Bemerken Sie, dass da der erforderliche Byte-Tausch von der Länge der Variablen abhängt, die in der Datei versorgt sind (zwei ganze 2-Byte-Zahlen verlangen einen verschiedenen Tausch als eine ganze 4-Byte-Zahl), ein allgemeines Dienstprogramm, um endianness in binären Dateien umzuwandeln, kann nicht bestehen.

"Bit endianness"

Die Begriffe haben endianness gebissen, oder Bit-Niveau werden endianness selten verwendet, wenn man über die Darstellung eines versorgten Werts spricht, weil sie nur für die seltenen Computerarchitekturen bedeutungsvoll sind, wo jedes individuelle Bit eine einzigartige Adresse hat. Sie werden jedoch verwendet, um sich auf die Übertragungsordnung von Bit über ein Serienmedium zu beziehen. Meistenteils wird diese Ordnung durch die Hardware durchsichtig geführt und ist die Entsprechung des Bit-Niveaus wenig-endian (niedriges Bit zuerst), obwohl Protokolle bestehen, die die entgegengesetzte Einrichtung verlangen (z.B. I²C, und SONET und SDH). Im Netzwerkanschluss wird die Entscheidung über die Ordnung der Übertragung von Bit im wirklichen Boden der Datenverbindungsschicht des OSI Modells getroffen. Da Bit, das bestellt, gewöhnlich nur auf einer sehr niedrigen Stufe wichtig ist, Übertragungen nennend, "sind LSB zuerst" oder "MSB zuerst" beschreibender als das Zuweisen eines endianness zur Bit-Einrichtung.

Andere Bedeutungen

Einige Autoren erweitern den Gebrauch des Wortes "endianness", und von zusammenhängenden Begriffen, zu Entitäten wie Straßenadressen, Datum-Formate und andere. Solcher Gebrauch — grundsätzlich endianness zu einem bloßen Synonym der Einrichtung der Teile abnehmend — ist Sondergebrauch (z.B, ISO 8601:2004 Gespräche über die "hinuntersteigende Ordnung "Jahr-Monatstag"", nicht über das "große-endian Format"), haben weit verbreiteten Gebrauch nicht, und sind allgemein (anders als für Datum-Formate) verwendet in einem metaphorischen Sinn.

"Endianness" wird manchmal verwendet, um die Ordnung der Bestandteile eines Domainnamens zu beschreiben, z.B 'en.wikipedia.org' (das übliche moderne formen sich 'wenig-endian') gegen das Rück-DNS 'org.wikipedia.en' ('groß-endian', verwendet, um Bestandteile, Pakete oder Typen in Computersystemen, zum Beispiel javanische Pakete, Macintosh ".plist" Dateien, usw. zu nennen). URL-ADRESSEN können 'groß-endian' betrachtet werden, wenn auch der Gastgeber-Teil 'wenig-endian' DNS Name sein konnte.

Verweisungen und Zeichen

Weiterführende Literatur

Außenverbindungen


Morgenempfang / Skala von Scoville
Impressum & Datenschutz