információtechnológia
Endianitás
Fogalmak
Big Endian:
- A szám bájtjai az eredeti sorrendben kerülnek a memóriába.
Mi az endianitás?
Az endianitás egy olyan számítástechnikai fogalom, amely azt határozza meg, hogy a számítógép hogyan rendezi el a memóriájában a több bájtból álló adatokat, például a 32 vagy 64 bites számokat. Ez különösen fontos, amikor adatokat tárolunk vagy továbbítunk, mivel az eltérő endianitású rendszerek különböző módon értelmezhetik az adatokat.
Az endianitás típusai
Két fő típusa létezik:
- Big Endian (nagy a végén): A szám legnagyobb helyi értékű bájtja (MSB – Most Significant Byte) kerül az első helyre, azaz a memóriában a legalacsonyabb címre.
- Little Endian (kicsi a végén): A szám legkisebb helyi értékű bájtja (LSB – Least Significant Byte) kerül az első helyre, azaz a memóriában a legalacsonyabb címre.
Példa: 3A 4B 1C 2D (32 bites szám)
- Big Endian:
- A szám bájtjai az eredeti sorrendben kerülnek a memóriába.
Memóriacím | Tartalom |
---|---|
0x100 | 3A |
0x101 | 4B |
0x102 | 1C |
0x103 | 2D |
Little Endian:
- A szám bájtjai fordított sorrendben kerülnek a memóriába.
Memóriacím | Tartalom |
---|---|
0x100 | 2D |
0x101 | 1C |
0x102 | 4B |
0x103 | 3A |
Hogyan emlékezzünk rá?
Képzelj el két tojást:
- A Big Endian a tojás széles alját nyitja ki először.
- A Little Endian a tojás kicsi végét bontja meg először.
Ezt az analógiát egy híres regény, Swift Gulliver utazásai ihlette, ahol két csoport vitatkozott arról, hogyan kell helyesen feltörni egy tojást.
Miért fontos mindez?
- Adatok továbbítása: Ha két különböző endianitású rendszer kommunikál (például két számítógép), akkor fontos figyelni arra, hogy megfelelő sorrendben olvassák az adatokat.
- Processzorok típusai:
- A Little Endian az Intel és az AMD processzoroknál gyakori.
- A Big Endian inkább beágyazott rendszereknél használatos, például FPGA-k vagy PowerPC processzorok esetében.
Endianitás
Feladatok
1. feladat
Feladat: Big és Little Endian ábrázolás
Adott egy 32 bites szám: 7A 8B 9C AD.
- a) Írd le a számot Big Endian formátumban, ha a memóriacímek a 0x0, 0x1, 0x2, 0x3.
- b) Írd le a számot Little Endian formátumban ugyanazokra a memóriacímekre!
Big Endian formátum
A Big Endian szabály szerint a számok az eredeti sorrendjükben kerülnek a memóriába, kezdve a legnagyobb helyi értékű bájttal.
Memóriacím | Tartalom |
---|---|
0x0 | 7A |
0x1 | 8B |
0x2 | 9C |
0x3 | AD |
Little Endian formátum
A Little Endian szabály szerint a számok fordított sorrendben kerülnek a memóriába, kezdve a legkisebb helyi értékű bájttal.
Memóriacím | Tartalom |
---|---|
0x0 | AD |
0x1 | 9C |
0x2 | 8B |
0x3 | 7A |
2. Feladat: Ábrázolja a „2A 3B 4C 1F” 32-bites értéket LE illetve BE formátumokban a 0x0-tól kezdődően (bytos tárolási egységekben) növekvő címeken.
Big Endian formátum
A Big Endian szabály szerint a legnagyobb helyi értékű bájt kerül az első helyre (0x0 címre), és a szám eredeti sorrendjét követi.
Memóriacímek és tartalom Big Endian szerint:
Memóriacím | Tartalom |
---|---|
0x0 | 2A |
0x1 | 3B |
0x2 | 4C |
0x3 | 1F |
Tehát Big Endian formátumban a memória így néz ki: 2A 3B 4C 1F
Little Endian formátum
A Little Endian szabály szerint a legkisebb helyi értékű bájt kerül az első helyre (0x0 címre), és a szám bájtjait fordított sorrendben tároljuk.
Memóriacímek és tartalom Little Endian szerint:
Memóriacím | Tartalom |
---|---|
0x0 | 1F |
0x1 | 4C |
0x2 | 3B |
0x3 | 2A |
Tehát Little Endian formátumban a memória így néz ki: 1F 4C 3B 2A