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).

Různé platformy mohou používat různou endianitu a tento problém je nutné brát v úvahu při přenášení binárních souborů nebo síťové komunikaci mezi takovými platformami.

[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 ...