Endianita
Z Wikipedie, otevřené encyklopedie
Endianita je v informatice způsob uložení čísel v paměti počítače, který definuje, v jakém pořadí se uloží jednotlivé bajty příslušného datového typu. Označuje se také jako pořadí bajtů (anglicky byte order).
Obsah |
[editovat] Endianita a kompatibilita
Endianita je jedním ze základních zdrojů nekompatibility při ukládání a výměně dat v digitální podobě. Je nutné brát ji v úvahu při přenášení binárních souborů nebo při síťové komunikaci mezi různými platformami. Tento problém pramení z toho, že stejný zdrojový kód zkompilovaný pro počítače s různými procesory může díky jejich různé endianitě produkovat při ukládání nebo přenosu různá binární data. Nejrozšířenějším kódováním vícebytových dat je v současnosti little endian, což je dané masovým rozšířením architektury Intel x86.
Zdrojem zmatků může být rovněž specifikace IEEE 754, která nedefinuje, v jakém pořadí bytů se mají ukládat čísla v plovoucí řádové čárce. Endianita může způsobovat problémy i při práci s texty v kódování unicode, proto je rozumné tyto texty ukládat v kódování UTF-8, které je nezávislé na architektuře počítače.
[editovat] Big-endian
V tomto případě se na paměťové místo s nejnižší adresou uloží nejvíce významný bajt (MSB) a za něj se ukládají ostatní bajty až po nejméně významný bajt (LSB) na konci. Architektury uplatňující tento princip se nazývají big-endian (mnemotechnická pomůcka: big end first) a patří mezi ně Motorola 68000, SPARC a System/370.
Např. 32bitové číslo 0x4A3B2C1D
se na adresu 100
uloží takto:
100 |
101 |
102 |
103 |
||
... |
4A |
3B |
2C |
1D |
... |
[editovat] Little-endian
V tomto případě se na paměťové místo s nejnižší adresou uloží nejméně významný bajt (LSB) a za něj se ukládají ostatní bajty až po nejvíce významný bajt (MSB). Architektury uplatňující tento princip se nazývají little-endian (mnemotechnická pomůcka: little end first) a patří mezi ně MOS Technology 6502, Intel x86 a DEC VAX.
Např. 32bitové číslo 0x4A3B2C1D
se na adresu 100
uloží takto:
100 |
101 |
102 |
103 |
||
... |
1D |
2C |
3B |
4A |
... |
[editovat] Middle-endian
Některé architektury označované middle-endian (nebo někdy mixed-endian) užívají složitější způsob pro určení pořadí jednotlivých bajtů, který je dán kombinací obou výše zmíněných způsobů. Mezi takovéto architektury patří např. rodina procesorů PDP-11. Tento formát je také použit pro ukládání čísel s pohyblivou řádovou čárkou a dvojitou přesností v systémech VAX a ARM.
Např. 32bitové číslo 0x4A3B2C1D
se na adresu 100
uloží takto:
100 |
101 |
102 |
103 |
||
... |
3B |
4A |
1D |
2C |
... |
nebo případně:
100 |
101 |
102 |
103 |
||
... |
2C |
1D |
4A |
3B |
... |