Endian example
**Tavujärjestys** (engl. *byte order*, myös engl. *endianness*) tietokoneessa tarkoittaa sitä, missä järjestyksessä tietokoneen suoritin käsittelee suurempia kuin yhden tavun pituisia kokonaisuuksia.

Esimerkiksi neljästä 8-bittisestä tavusta muodostuva 32-bittinen sana voidaan tallentaa tietokoneen muistiin useilla eri tavoilla. Asian havainnollistamiseksi eri tavuihin kuuluvat bitit on tässä merkitty kirjaimin A–D, joista *A* edustaa suurinta eli *eniten merkitsevää* tavua.

Historia
--------

Unix-käyttöjärjestelmä siirrettiin PDP-11-tietokoneilta IBM Series 1 -minitietokoneille. Sananpituus oli molemmissa sama, mutta tavut vaihtoivat paikkaansa. Käyttöjärjestelmän käynnistyttyä se ilmoitti olevansa NUXI, jonka vuoksi ongelmaa on kutsuttu myös *NUXI-ongelmaksi*.

Intel 8008-suorittimen tavujärjestys oli *little endian* eli vähemmän merkityksellinen tavu oli ensin: syynä tähän oli `JUMP`-käskyn muoto yhteensopivana Datapoint 2200:n kanssa. Tämä on vaikuttanut myöhempään x86-arkkitehtuuriin.

Danny Cohen tunnustetaan termien *big endian* ja *little endian* esittämisestä artikkelissaan *On Holy Wars and a Plea for Peace*.

Big endian
----------

*Big endian* -muodossa (*laskeva tavujärjestys*) sanan merkitsevimmät tavut tallentuvat ensin eli alempiin muistiosoitteisiin:

AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDD
Tämä vastaa tavallisesti käytettyjä lukujärjestelmiä, joissa suurin eli merkitsevin arvo ilmoitetaan ensimmäiseksi (esimerkiksi luvussa 256 numero 2 edustaa satoja, joten se on merkitsevämpi kuin kymmeniä edustava numero 5, joka puolestaan merkitsee enemmän kuin ykkösiä edustava numero 6). Tätä tavujärjestystä käyttävät monien tietokonevalmistajien suorittimet, ja se on myös Internetissä käytettävän IP-protokollan otsikkotiedoissa käytetty tavujärjestys (engl. *network byte order*).

Little endian
-------------

*Little endian* -muodossa (*nouseva tavujärjestys*) sanan vähiten merkitsevät tavut tallentuvat ensin:

DDDDDDDDCCCCCCCCBBBBBBBBAAAAAAAA
Tämän voi rinnastaa tyypilliseen suomalaiseen tapaan esittää päivämäärät järjestyksessä, jossa ensin ilmoitetaan päivä, sitten kuukausi ja lopulta vuosiluku. Tällaista tavujärjestystä käyttävät Intelin suorittimet, PDP-11, VAX ja useat sulautetut järjestelmät.

Tavujärjestys on oleellista tietää käsiteltäessä binaarimuodossa olevia tiedostoja. Unicoden myötä sama tarve on tullut esiin myös tekstitiedostoissa.

Bi-endian
---------

*Bi-endian* suoritin voi toimia kummassakin tilassa. Tietyissä suorittimissa tämä on mahdollista asettaa suorittimen *resetoinnin* yhteydessä. Esimerkki *bi-endian*-suorittimesta on ARM.

ISO 9660 -tiedostojärjestelmässä useampitavuiset arvot ovat tallennettu kummassakin (little, big) tavujärjestyksessä, joten sitä voi kutsua myös *bi-endian*-tavujärjestykseksi.

Middle-endian
-------------

*Middle-endian* on yleistermi muille vaihtoehdoille. Esimerkiksi PDP-11:n ohjelmakääntäjä tallentaa 32-bittiset arvot vaihtamalla 16-bittisten puoliskojen järjestystä ennakoidusta little-endian muodosta. Tälle on myös nimitys *PDP-endian*. Esimerkiksi jos little- ja big-endian muodoissa "ABCD" ja "DCBA" ovat normaaleja, PDP-muodossa arvo olisi "BADC".

Lähteet
-------

1. ↑  Libes, Don; Ressler, Sandy: *Life With UNIX*, s. 9−10. Prentice Hall, 1989.
2. 1 2  Stanley Mazor: The History of the Microcomputer-Invention and Evolution (PDF) *citeseerx.ist.psu.edu*. Viitattu 24.10.2021. (englanniksi)
3. ↑  Danny Cohen *internethalloffame.org*. Viitattu 25.10.2021. (englanniksi)
4. ↑  Danny Cohen: ON HOLY WARS AND A PLEA FOR PEACE *rfc-editor.org*.  1.4.1980. Viitattu 25.10.2021. (englanniksi)
5. ↑  Memory endianness ARM. Viitattu 1.2.2017.
6. ↑  ISO Disk Image File Format Sustainability of Digital Formats Planning for Library of Congress Collections. Viitattu 1.2.2017.
7. ↑  The ISO 9660 File System *users.telenet.be*.  Arkistoitu 3.3.2017. Viitattu 1.2.2017.
8. 1 2  PDP-endian *en.chys.info*.  Arkistoitu 29.10.2016. Viitattu 1.2.2017.

Aiheesta muualla
----------------

* Kuvia tai muita tiedostoja aiheesta **Tavujärjestys** Wikimedia Commonsissa