Kaj je endianness?

Endianness je funkcija sistema, ki podrobno opisuje celoštevilsko predstavitev. Ureja način prikaza številk. Podobno kot govorjeni jezik je treba cela števila kot del kod prevesti na papir. Medtem ko nekatere kulture berejo od desne proti levi, nekatere pa od leve proti desni, so lahko številke v kodah razporejene tudi od desne proti levi ali od leve proti desni.

Sistemski pomnilnik vsebuje bajte in vsaka lokacija v sistemu shrani en element pomnilnika. Ti elementi so običajno bajti, čeprav nekateri sistemi shranjujejo bite. Ena beseda ali celo število se prevede v 32 bitov ali štiri bajte. Ker lahko vsak pomnilniški naslov shrani samo en bajt, ne štiri, se mora celo število razdeliti na posamezne bajte, od katerih vsak uporablja dve števki za predstavitev vrednosti tega bajta.

Izraz endianness izhaja iz knjige Gulliverjeva potovanja Jonathana Swifta, kjer satirično opisuje razlike med načinom, kako ljudje jedo kuhana jajca – bodisi z velikega ali malega konca. Zato je endianness v dveh različicah: big endian in small endian. Razporeditev velikega endiana vzame celo število, sestavljeno iz več bajtov, in postavi najpomembnejše od teh bajtov na levo. Najpomembnejši bajt je shranjen na najmanjšem naslovu. To vrsto razvrščanja bajtov zlahka razumejo tisti, ki govorijo jezike, kot je angleščina, kjer se besedilo bere od leve proti desni.

Razporeditev malega endiana je tista, pri kateri bo najpomembnejši bajt v večbajtnem celem številu na desni. Tukaj je najmanj pomemben bajt shranjen na najmanjšem naslovu. To omogoča branje od desne proti levi, kot sta hebrejski in arabski jezik. Če želite, da bo bajt razvrščen naravnost, ne pozabite, da ko je najmanj pomemben bajt (LSB) shranjen prvi, se imenuje mali endian. Ko je najpomembnejši bajt (MSB) shranjen prvi, se imenuje big endian.

Vsi sistemi so bodisi veliki ali mali endian, nekateri pa imajo registrski bit, ki uporabniku omogoča izbiro želenega endiana. Ko shranjujete cela števila v sistemski datoteki, je datoteka morda poslana v stroj, ki uporablja drugo vrsto endiannessa. Številke bi bile nazaj in sporočilo ne bi imelo nobenega smisla. Običajno, ko ni jasno, kateri endianness uporabiti, pride v poštev nekaj, kar se imenuje omrežni vrstni red bajtov. S tem so cela števila poslana v skupinah po štiri bajte z velikim ali malim endiannessom, izbranimi naključno, in stroj, ki prejme cela števila, lahko obrne bajte, če se endiannessi ne ujemajo.

Endianness se uporablja samo, če nekaj velike vrednosti, kot je beseda, razbijemo na manjše dele. Nato se oblikuje vrstni red za shranjevanje teh delov v sistemski pomnilnik. Ne uporablja se pri shranjevanju vrednosti v register, ki lahko vsebuje vse. V tem primeru so vsi deli, desni in levi, enako pomembni.