Centro de Información

Endianness (Orden de Bytes)

Con la orden de bytes (Endianness), la organización de memoria está designada en tecnología informática. Cada vez que se requiera almacenar más bits que en la unidad direccionable más pequeña, es necesario declarar en qué orden se almacenan los datos.

En general, la unidad direccionable más pequeña está compuesta de ocho bits, es decir, un byte. Si tiene que almacenar más de un byte, hay dos posibilidades de almacenamiento: Almacenamos los bytes de izquierda a derecha (esto se llama big endian) o de derecha a izquierda (little endian).

Big Endian

Big Endian significa comenzar por el gran final (de ahí el nombre). Similar a la representación del tiempo con la secuencia "hora - minuto - segundo", aquí, el byte con el bit más significativo se almacena primero, es decir, se almacena en la dirección de memoria más baja.

Little Endian

La otra opción es comenzar en el extremo pequeño. De manera similar a escribir la fecha con "día - mes - año", el byte de la parte menos significativa se inicia aquí y es el primero. Por lo tanto, este byte se escribe en la dirección de memoria más baja en este caso.

Relevancia para Formatos Unicode

En codificaciones de texto Unicode como UTF-16 o UTF-32, donde un carácter está representado no solo por un byte sino por varios bytes, la cuestión del orden de bytes o endianness surge automáticamente.

En la codificación UTF-32, por ejemplo, un carácter siempre tiene exactamente 4 bytes. Estos bytes de un carácter se pueden organizar de derecha a izquierda según Big Endian o de izquierda a derecha según Little Endian. En consecuencia, las codificaciones se denominan UTF-32 Big Endian (UTF-32 BE) o UTF-32 Little Endian (UTF-32 LE).

La denominada marca de orden de bytes (Byte Order Mark, BOM) se utiliza para distinguir entre los dos tipos de codificación. La BOM corresponde al punto de código U+FEFF y opcionalmente se puede insertar como primer carácter en un archivo. Los editores de texto no deben mostrarlo como un carácter visible. Para la codificación UTF-32, la marca de orden de bytes consiste en la secuencia de bytes 00 00 FE FF (Big Endian) o la secuencia de bytes FF FE 00 00 (Little Endian). Esto significa que los programas que leen archivos debidamente codificados pueden decidir inmediatamente después de los primeros bytes cómo se interpretarán los siguientes bytes o caracteres.

Las secuencias de bytes FE FF (UTF-16 LE) y FF FE (UTF-16 BE) se utilizan para codificaciones UTF-16. Con otras codificaciones, como ASCII o ANSI, no surge la cuestión del orden de los bytes, ya que cada carácter siempre tiene un byte y, por lo tanto, no se puede organizar de diferentes maneras.