¿Qué es Endianness?

Endianness es la función de un sistema que detalla la representación de números enteros. Ordena la forma en que aparecen los números. Al igual que en un idioma hablado, los números enteros como parte de los códigos deben traducirse en papel. Si bien algunas culturas se leen de derecha a izquierda y otras de izquierda a derecha, los números en los códigos también se pueden ordenar de derecha a izquierda o de izquierda a derecha.

La memoria de un sistema contiene bytes y cada ubicación del sistema almacena un elemento de la memoria. Estos elementos suelen ser bytes, aunque algunos sistemas almacenan bits. Una palabra o un entero se traduce en 32 bits o cuatro bytes. Dado que cada dirección de memoria solo puede almacenar un byte, no cuatro, el número entero debe dividirse en bytes individuales, cada uno de los cuales usa dos dígitos para representar el valor de ese byte.

El término endianidad proviene del libro Los viajes de Gulliver de Jonathan Swift, donde describe satíricamente las diferencias entre la forma en que las personas comen huevos duros, ya sea desde el extremo grande o el extremo pequeño. Por lo tanto, la endianidad viene en dos variedades: big endian y little endian. Una disposición de big endian toma un número entero que consta de varios bytes y coloca el más significativo de estos bytes a la izquierda. El byte más significativo se almacena en la dirección más pequeña. Este tipo de ordenación de bytes es fácil de comprender para quienes hablan idiomas como el inglés, donde el texto se lee de izquierda a derecha.

Una disposición little endian es aquella en la que el byte más importante de un entero multibyte estará a la derecha. Aquí, el byte menos significativo se almacena en la dirección más pequeña. Esto lo convierte en una lectura de derecha a izquierda, como los idiomas hebreo y árabe. Para mantener el orden de los bytes en orden, recuerde que cuando el byte menos significativo (LSB) se almacena primero, se llama little endian. Cuando el byte más significativo (MSB) se almacena primero, se llama big endian.

Todos los sistemas son endian grandes o pequeños, y algunos tienen un bit de registro, lo que permite al usuario elegir el endian preferido. Al almacenar enteros en un archivo del sistema, el archivo puede enviarse a una máquina que utiliza el otro tipo de endianidad. Los números estarían al revés y el mensaje no tendría ningún sentido. Normalmente, cuando no está claro qué endianidad utilizar, entra en juego algo llamado orden de bytes de red. Con esto, los enteros se envían en grupos de cuatro bytes de endianness grande o pequeño, escogidos al azar, y la máquina que recibe los enteros puede invertir los bytes si los endianness no coinciden.

Endianness solo se usa cuando se divide algo de gran valor, como una palabra, en partes más pequeñas. A continuación, se forma un orden en el que almacenar estas partes en la memoria del sistema. No se utiliza cuando se almacena un valor en un registro que puede contenerlo todo. En este caso, todos los bits, derecho e izquierdo, son igualmente importantes.