Információs technológia
Endianitás - mitől "kicsi" vagy "nagy" a byte vége?
Mi az az endianitás?
Az endianitás lényege, hogy meghatározza, milyen sorrendben tárolja és olvassa ki a számítógép a több byte-ból álló adatokat.
Másképp fogalmazva: amikor a gép elment egy számot, eldönti, melyik byte kerüljön előre és melyik hátra – ez alapján fogja tudni, hogyan kell azt később helyesen értelmezni vagy továbbítani.
Ez a sorrend az egész számítógépes működésre hatással van, a memória tárolásától a hálózati kommunikációig.
Honnan jön az endianitás? Gulliver és a lágytojás háborúja
Az endianitás kifejezés nem a számítástechnikából, hanem az irodalomból szármatik. Jonathan Swift 1726-ban írta meg a Gulliver utazásai című regényét, melyben főhőse, Gulliver különös világokba látogat el.
Az egyik ilyen országban az emberek két csoportra szakadtak – és egy egészen banális dolog miatt évtizedek óta háborúztak
A vita tárgya – melyik végén kell feltörni a lágytojást?
A Bid-Endienek szerint a nagyobb, vastagabb végén, míg a Little-Endienek szerint a kisebb, hegyesebb végén illik feltörni.
A vita annyira elmérgesedik, hogy a két oldal háborút vív
És mi köze ennek a számítógépekhez?
Amikor az 1980-as években a számítógép-architektúrák elkezdtek különbözni abban, melyik byte-ot teszik előre a több-byte-os adatokban. Két fejlesztői tábor alakult ki:
-
az egyik a Big-Endian,
-
a másik a Little-Endian formátumot tartotta logikusabbnak. Egy 1980-as esszében, Danny Cohen Swift regényét idézve használta először az edianness szót a számítógépes világban – és ez a név azóta is megmaradt.
Bájtsorrend a számítógépeken
A bájtsorrend, vagyis az endianitás arról szól, hogy a gép melyik végéről kezdi olvasni és tárolni az adatokat.
Képzeld el, hogy a memóriád egy házsor, ahol minden ház egy bájtot jelent. Egy szám, mondjuk a 4A 3B 2C 1D – négy ilyen házban lakik. A kérdés az: a postás a legnagyobb helyiértékű bájttal (4A) kezdi a kézbesítést, vagy a legkisebbel (1D)?
Itt válik el a két világ
Big-Endian - a klasszikus rendpárti
Ebben a világban a számokat úgy tárolják, ahogy mi olvassuk: a nagyobb érték kerül előre, a kisebb pedig utána. Tehát ha a szám 4A3B2C1D, akkor az így néz ki a memóriában. Ez az elrendezés logikus és tiszta. A legtöbb hálózati szabvány (például az IP-címek kezelése) ezt a rendszert használja.
Little Endian
A Little Endian gépek másképp gondolkoznak. Miért kezdenék a naggyal, ha a kicsi is elég? Ők a legkisebb helyiértékkel kezdik a tárolást, tehát a 4A3B2C1D szám fordítva kerül a memóriába
Ez kicsit olyan, mintha a számokat visszafelé írnád a füzetbe – de a gép számára ez hatékonyabb lehet. Miért?
Mert ha például csak a szám alsó bájtját akarja olvasni, nem kell végigböngésznie az egészet – elég az első cím. Az Intel processzorok ezt a Little-Endian módszert használják, ezért hívják sokan egyszerűen Intel formátumnak. Ha nem kötik ki külön, akkor ezt a formátumot értjük alapértelmezetten.
Big-Endian
BE| Memóriacím | Érték |
|---|---|
| 100 | 4A |
| 101 | 3B |
| 102 | 2C |
| 103 | 1D |
Little-Endian
LE| Memóriacím | Érték |
|---|---|
| 100 | 1D |
| 101 | 2C |
| 102 | 3B |
| 103 | 4A |
Miért fontos az endianitás a való életben?
A számítógépek nemcsak magukban dolgoznak: adatokat küldenek egymásnak hálózaton keresztül.
Ahhoz, hogy ezt jól értsék egymás között, mindenki ugyanabban a sorrendben kell, hogy kezelje a bájtokat.
A hálózatok Big-Endian sorrendet használnak — ez az úgynevezett „network byte order”.
Ezért ha a te géped Little-Endian (például az Intel vagy AMD processzoros számítógépek ilyenek),
akkor amikor adatot küldesz vagy fogadsz, a gépnek előtte át kell fordítania a bájtok sorrendjét.
Képzeld el, mintha két ember levelezne, de egyikük mindig balról jobbra ír, a másik jobbról balra — ha nem egyeznek meg, a mondatok értelmetlenné válnak.
A hálózatban a htonl() és ntohl() (vagyis host to network és network to host) függvények végzik ezt az „átfordítást”, hogy a címzettek mindig jól értsék a küldött adatokat.
Fájlformátumok és „adatnyelvek”
Amikor egy fájlban adatokat tárolunk, a gépnek tudnia kell, milyen sorrendben kerültek a bájtok bele.
Ezért a legtöbb fájltípusnak van egy apró jelzése, ami megmondja: „én bizony Big vagy Little Endian vagyok”.
Például:
-
a BMP és WAV fájlok többnyire Little-Endian sorrendűek (mint a Windows-gépek),
-
a PNG képek és a hálózati csomagok viszont Big-Endian-ként működnek,
-
a TIFF fájlok pedig trükkösek: a fájl elején két betű (
IIvagyMM) mutatja meg, melyik sorrendet használják.
Így, ha a programod tudja, mit olvas, nem fogja „fejjel lefelé” értelmezni az adatokat.
Szövegkódolás – amikor a betűk sem egyformák
A számítógépben a betűk is számokká alakulnak.
Az UTF-16 és UTF-32 kódolások több bájtot használnak egy karakterhez, és itt is számít a sorrend.
Hogy ne keveredjen össze a rendszer, minden ilyen fájl elején ott van egy apró jelzés, a BOM (Byte Order Mark):
-
FF FE→ a fájl Little-Endian, -
FE FF→ a fájl Big-Endian.
Az UTF-8 már modernebb, ott a sorrend mindig ugyanaz, ezért nincs is szükség ilyen jelzésre.
Bájtsorrend a dátumokban
Az endianitás nemcsak a számítógépekben él – a mindennapi életben is találkozunk vele. Például akkor, amikor leírunk egy dátumot:
Az amerikaiak így írják le: 10/22/2025 -> hónap, nap, év
A legtöbb európai így írja le: 22. 10. 2025 -> nap, hónap, év
A japánok és mi is így: 2025. 10. 22. -> év, hónap, nap
Mind ugyanazt az információt tartalmazza, csak más a sorrend, pont mint a bájtoknál. Az egyiknél a nagy (év) van az elején, másiknál a kicsi (nap)
Bájtsorrend a címzésnél
A bájtsorrend megérthető egy postacímmel is.
Általában a legkisebb egységgel kezdik (a címzett neve), majd következik a ház száma, az utca neve, város neve, régió, majd az ország. (Magyarországon kevert címzést használunk).
Néhány ázsiai ország, köztük Japán a nagy az elején rendszert használja: a cím az országgal kezdődik, majd a régia, város, és a címzett neve.
Még a nyelvben is megtalálható!
Ha magyarul azt mondod, hogy háromszáz-huszonnégy, akkor „nagy az elején” módon gondolkodsz.
De ha németül mondod, az vierundzwanzig (szó szerint „négy és húsz”) – tehát „kicsi az elején”!
Látszik, hogy a nyelvek is más sorrendet szeretnek — pont, mint a processzorok.
Ha szeretnéd folytatni a tanulást, itt válogathatsz az információs technológia anyagok között
Bináris számrendszer
A bináris számrendszer a számítógépek alapnyelve – minden, amit a gép tárol, számol vagy megjelenít, valójában nullákból és egyesekből áll. 💻Ebben a leckében megtanuljuk, hogyan működik ez a kétállapotú rendszer, mit jelent az, hogy p = 2, és hogyan ábrázolható...
Legkisebb és legnagyobb decimális érték
Ebben a leckében megtanuljuk, mit jelent egy számrendszerben a legkisebb és legnagyobb decimális érték. Megnézzük, hogyan lehet kiszámolni, meddig terjedhetnek a számok egy adott alapú rendszerben. Közben kiderül, hogy minden rendszernek megvannak a határai, de a...
Helyiérték
Nem elég tudni, hogy valahol egy egyes, kettes vagy hármas szám szerepel, azt is kell tudni, hogy hol van az a számjegy és mennyit ér ott. Ebben a leckében megmutatjuk, hogyan lesz a tizedesvesszőn innen és túl minden szám mögött logika és szabály. Ne aggódj, nem...




