Endianness
De Wikipedia, la enciclopedia libre
El término inglés Endianness designa el formato en el que se almacenan los datos de más de un byte en un ordenador. Hay dos criterios que se han denominado little-endian y big-endian, cuyo nombre proviene de la novela Los viajes de Gulliver de Jonathan Swift en la que los habitantes de los imperios de Lilliput y Blefuscu libran una encarnizada guerra por una disputa sobre el lado por el que debían empezar a comerse los huevos.
El problema es similar a los lenguajes que se escriben de derecha a izquierda, como el árabe, o el hebreo, frente a los que se escriben de izquierda a derecha.
El sistema big-endian adoptado por Motorola entre otros, consiste en representar los bytes en el orden "natural": así el valor hexadecimal 0x4A3B2C1D se almacenaría en memoria en la secuencia {4A, 3B, 2C, 1D}. En el sistema little-endian adoptado por Intel, entre otros, el mismo valor se almacenaría como {1D, 2C, 3B, 4A}.
Algunas arquitecturas de microprocesador pueden trabajar con ambos formatos (ARM, PowerPC, DEC Alpha, PA-RISC, MIPS), y a veces son referidas como sistemas middle-endian.
[editar] Ejemplo
Un código simple en lenguaje C para detectar si una máquina es little-endian o big-endian:
#include <stdio.h> int main(void) { int i = 1; char *p = (char *) &i; if ( p[0] == 1 ) printf("Little Endian\n"); else printf("Big Endian\n"); return 0; }