Endianita: Porovnání verzí
Smazaný obsah Přidaný obsah
m Bot: Odstranění 24 odkazů interwiki, které jsou nyní dostupné na Wikidatech (d:q339338) |
m oprava opakovaných referencí (data z WP:WCW), odstranění nadbytečného odřádkování |
||
Řádek 13:
Little endian má jednu dobrou vlastnost. Jedna a ta samá hodnota může být z paměti načtena pro různou délku, bez změny adresy. Například 32 bitový řetězec FF 00 00 00 může být načten ze stejné adresy jako 8 bitový (hodnota = FF), 16bitový (00FF), 24bitový (0000FF), 32bitový (000000FF); jejich hodnota stále zůstává 255. Tato vlastnost je však velmi zřídka využívána programátory, kteří pracují s vyššími programovacími jazyky, proto se ponechává kompilátoru.
Např. 32[[bit]]ové číslo <code>0x4A3B2C1D</code> se na adresu <code>100</code> uloží takto:
Řádek 170 ⟶ 169:
=== Použití struktury union ===
Následujícím způsobem lze přehazovat bajty libovolně dlouhého datového typu. Daň, kterou si tato obecnost bere, je rychlost. Proto je daleko vhodnější použít některou z výše uvedených možností (instrukce, výpočet).
Další problém, který může nastat, je, že musíme zajistit přesný počet bajtů daného datového typu. Není definované, že např. <code>int</code> musí mít přesný počet bitů (je definována pouze jeho dolní hranice).<ref>[http://en.wikipedia.org/wiki/Integer_%28computer_science%29 Integer computer science]</ref><ref name="rfr1">[http://en.wikipedia.org/wiki/Limits.h limits.h]</ref>
<source lang="C">
Řádek 216 ⟶ 215:
<source lang="C">
#include <sys
#ifdef __BYTE_ORDER
Řádek 250 ⟶ 249:
</source>
Ve výše uvedeném kódu je do proměnné <code>i</code> (která má 32 bitů)<ref
===== Použití struktury union (Harbison and Steele) =====
|