Tavujärjestys

Tavujärjestys (, myös ) 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 ().

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

Aiheesta muualla 

Tietokonetekniikka
Dataliikenne