Endianness se refiere a la convención utilizada para ordenar los bytes de una palabra de datos multi-byte (como enteros de 16, 32 o 64 bits) en la memoria de una computadora o durante la transmisión de datos. Existen dos variantes principales: Big-Endian y Little-Endian. En Big-Endian, el byte más significativo (MSB) se almacena en la dirección de memoria más baja, similar a cómo leemos números de izquierda a derecha. En Little-Endian, el byte menos significativo (LSB) se almacena en la dirección de memoria más baja. Esta distinción es fundamental para la correcta interpretación de los datos binarios.
En el mundo real, la mayoría de las arquitecturas de CPU modernas, como x86 y x64 (Intel y AMD), son Little-Endian. Por otro lado, arquitecturas más antiguas como PowerPC, SPARC y la mayoría de los sistemas de red (TCP/IP, que usa 'network byte order') son Big-Endian. Esto significa que cuando los datos se mueven entre sistemas con diferente Endianness (por ejemplo, de un servidor x86 a un dispositivo de red o a un sistema PowerPC), se requiere una conversión explícita de byte order. Protocolos como el de la imagen JPEG o el formato de archivo ELF también especifican su propio Endianness.
Para un Arquitecto de Sistemas, comprender el Endianness es crucial para diseñar sistemas distribuidos y de almacenamiento de datos robustos e interoperables. Ignorar el Endianness puede llevar a errores sutiles y difíciles de depurar, especialmente en la serialización/deserialización de datos, comunicación entre procesos (IPC) y persistencia de datos binarios. Las decisiones de diseño deben considerar el Endianness de las plataformas subyacentes y los protocolos de comunicación. A menudo, se opta por un formato de datos 'network byte order' (Big-Endian) para la comunicación entre sistemas heterogéneos, o se utilizan librerías que abstraen estas conversiones (como `htons`, `ntohl` en sockets). La elección impacta directamente en la portabilidad, el rendimiento (por la necesidad de conversiones) y la complejidad del código.