Vad är Endianness?

Endianness är funktionen hos ett system som detaljerar heltalsrepresentation. Den ordnar hur siffrorna visas. Ungefär som ett talat språk måste heltal som en del av koder översättas till papper. Medan vissa kulturer läser höger till vänster och vissa läser från vänster till höger, kan siffror i koder också ordnas antingen från höger till vänster eller från vänster till höger.

Ett systems minne innehåller bytes, och varje plats i systemet lagrar ett element i minnet. Dessa element är vanligtvis bytes, även om vissa system lagrar bitar. Ett ord eller heltal översätts till 32 bitar eller fyra byte. Eftersom varje minnesadress bara kan lagra en byte, inte fyra, måste heltalet delas upp i individuella byte, som var och en använder två siffror för att representera den bytens värde.

Termen endianness kommer från boken Gulliver’s Travels av Jonathan Swift, där han satiriskt beskriver skillnaderna mellan hur människor äter kokta ägg – antingen från den stora änden eller den lilla änden. Därför finns endianness i två varianter: big endian och little endian. Ett big endian-arrangemang tar ett heltal som består av flera byte och placerar den mest betydande av dessa byte till vänster. Den mest signifikanta byten lagras i den minsta adressen. Den här typen av byteordning är lätt att förstå för dem som talar språk som engelska, där text läses från vänster till höger.

Ett litet endian-arrangemang är ett där den viktigaste byten i ett multibyte-heltal kommer att finnas till höger. Här lagras den minst signifikanta byten i den minsta adressen. Detta ger höger till vänster läsning, som hebreiska och arabiska språken. För att hålla byteordningen rak, kom ihåg att när den minst signifikanta byten (LSB) lagras först, kallas den little endian. När den mest signifikanta byten (MSB) lagras först, kallas den big endian.

Alla system är antingen stora eller små endian, och vissa har en registerbit, som låter användaren välja önskad endianhet. När du lagrar heltal i en systemfil kan filen skickas till en maskin som använder den andra typen av endianness. Siffrorna skulle vara bakåtriktade och budskapet skulle inte vara meningsfullt. Vanligtvis, när det är osäkert vilken endianness som ska användas, kommer något som kallas nätverksbyteordning in i bilden. Med detta skickas heltal i grupper om fyra byte med antingen stor eller liten endianness, plockade slumpmässigt, och maskinen som tar emot heltal kan vända byte om endiannesses inte matchar.

Endianness används bara när man delar upp något av stort värde, till exempel ett ord, i mindre delar. En ordning i vilken dessa delar ska lagras i systemminnet bildas sedan. Det används inte när ett värde lagras i ett register som kan innehålla allt. I det här fallet är alla bitar, höger och vänster, lika viktiga.