Što je endianness?

Endianness je funkcija sustava koji detaljno prikazuje cijeli broj. Uređuje način na koji se brojevi pojavljuju. Slično kao i govorni jezik, cijeli brojevi kao dio kodova moraju se prevesti na papir. Dok neke kulture čitaju s desna na lijevo, a neke s lijeva na desno, brojevi u kodovima također se mogu poredati s desna na lijevo ili s lijeva na desno.

Memorija sustava sadrži bajtove, a svaka lokacija u sustavu pohranjuje jedan element memorije. Ovi elementi su obično bajtovi, iako neki sustavi pohranjuju bitove. Jedna riječ ili cijeli broj prevodi se u 32 bita ili četiri bajta. Budući da svaka memorijska adresa može pohraniti samo jedan bajt, a ne četiri, cijeli broj se mora podijeliti na pojedinačne bajtove, od kojih svaki koristi dvije znamenke za predstavljanje vrijednosti tog bajta.

Pojam endianness dolazi iz knjige Gulliver’s Travels Jonathana Swifta, gdje on satirično opisuje razlike između načina na koji ljudi jedu kuhana jaja – bilo s velikog ili malog kraja. Dakle, endianness dolazi u dvije varijante: big endian i small endian. Veliki endian raspored uzima cijeli broj koji se sastoji od više bajtova i smješta najznačajniji od tih bajtova na lijevo. Najznačajniji bajt je pohranjen na najmanjoj adresi. Ovu vrstu redoslijeda bajtova lako je razumjeti onima koji govore jezike kao što je engleski, gdje se tekst čita s lijeva na desno.

Mali endian raspored je onaj u kojem će najvažniji bajt u višebajtnom cijelom broju biti s desne strane. Ovdje je najmanji bajt pohranjen na najmanjoj adresi. To čini čitanje s desna na lijevo, poput hebrejskog i arapskog jezika. Kako bi redoslijed bajtova bio ravnopravan, zapamtite da se prvi pohranjuje najmanji bajt (LSB), to se zove mali endian. Kada se najvažniji bajt (MSB) pohrani prvi, to se naziva big endian.

Svi sustavi su ili big ili little endian, a neki imaju registarski bit, koji korisniku omogućuje odabir željenog endiannessa. Prilikom pohranjivanja cijelih brojeva u sistemskoj datoteci, datoteka se može poslati na stroj koji koristi drugu vrstu endiannessa. Brojevi bi bili unatrag, a poruka ne bi imala nikakvog smisla. Obično, kada je neizvjesno koji endianness koristiti, u igru ​​dolazi nešto što se zove mrežni poredak bajtova. Ovim se cijeli brojevi šalju u grupama od četiri bajta velikog ili malog endiannessa, odabranih nasumično, a stroj koji prima cijele brojeve može obrnuti bajtove ako se endiannessi ne podudaraju.

Endianness se koristi samo kada se nešto velike vrijednosti, kao što je riječ, rastavlja na manje dijelove. Zatim se formira redoslijed pohranjivanja ovih dijelova u memoriju sustava. Ne koristi se kada se vrijednost pohranjuje u registar koji može sadržavati sve. U ovom slučaju, svi bitovi, desni i lijevi, jednako su važni.