¿Hay algún truco práctico para recordar la diferencia entre big-endian y little-endian?

12

No trabajo todos los días con problemas de big-endian y little-endian, por lo que me resulta muy difícil recordar cuál es cuál.

Recientemente obtuve una entrevista preguntando la diferencia entre los dos; como no recordaba, decidí "adivinar" (50% de posibilidades, después de todo) pero fracasé.

Entonces, ¿hay algún truco práctico conocido para recordar cuál es la diferencia entre big endian y little endian?

    
pregunta Emiliano 04.04.2012 - 13:22

8 respuestas

14

Siempre he pensado que está definido de forma incorrecta, y esa es también la sugerencia para recordarlo. Como un hablante no nativo de inglés, veo "final" como lo opuesto a "inicio" (aunque obviamente "final" puede significar cualquier final: el final inicial o el final final). De todos modos, solo recuerdo que "está definido de manera incorrecta" :)

  • En big endian , el byte más significativo (el más grande) está en start .
  • En el pequeño endian , el byte menos significativo (más pequeño) está en el inicio .

O, refiriéndose a bit endianness :

  • 128 64 32 16 8 4 2 1 es big endian, porque termina hasta lo pequeño.
  • 1 2 4 8 16 32 64 128 es little endian, porque termina hasta lo grande.

Aunque el uso habitual de la palabra endianness se refiere a cómo se ordenan los bytes dentro de una palabra, su significado genérico se refiere a el ordenamiento de subcomponentes direccionables individualmente dentro de la representación de un elemento de datos más grande ( como se explica en Wikipedia ).

    
respondido por el Joonas Pulakka 04.04.2012 - 13:34
32

Mi propio consejo:

  • big endian = big-end primero! (el primer byte (la dirección más baja) es el MSB)
  • little endian = little-end primero! (el primer byte (la dirección más baja) es el LSB)
respondido por el KB99 04.04.2012 - 14:27
6

La mejor manera de recordar esto es que los pueblos civilizados buscan variedad y, por lo tanto, comen sus huevos de manera diferente a como ordenan sus números. Mientras que primero escribimos dígitos decimales comenzando con los dígitos grandes (big endian), comemos huevos pasados por agua del extremo pequeño (little endian).

    
respondido por el Andrey Fedorov 28.08.2015 - 21:29
6

Los números de Big-endian comienzan en el "extremo grande". Los números de Little-endian comienzan en el "final pequeño".

Ambos son una alusión a la cuestión de dónde comenzar a comer tu huevo, según los Viajes de Gulliver.

En este caso, "final" no es lo opuesto a inicio, solo significa cualquier extremo de una (cuerda | cadena | número | secuencia), por lo que no se les llama "gran finalista" o "pequeño finalista" (que Definitivamente sería lo contrario de "inicio").

    
respondido por el Vatine 29.08.2015 - 11:44
1

Nunca pude recordar cuál es "big-endian" y cuál es "little-endian", pero conocía el endianness de los procesadores PowerPC e Intel x86. Little tiene la mayoría de las letras en común con Intel, por lo que Intel x86 es little-endian.

Por supuesto, eso solo es útil si conoce el orden de bytes de PPC y x86. Por otro lado, ahora debes recordar que Intel x86 = little-endian. Y recuerde que x86 y ARM son muy, muy compatibles incluso con conjuntos de instrucciones totalmente diferentes.

    
respondido por el gnasher729 29.08.2015 - 17:36
1

Lo pondría de esta manera: ¡Lo grande es hermoso!

Big == beautiful == right.
La endiana derecha es la que puedes leer en un volcado hexadecimal, que es el que coloca primero el byte más significativo, como lo hace cualquier humano sano.

Poco == feo == mal.
Los hexdumps producidos por esta endianess están tan equivocados que huyes gritando "¡Brains!". Tal vez esto sea algún tipo de abominación alienígena, solo podemos especular sobre el origen de esta atrocidad. Sin embargo, existe, y estamos atrapados con él.

Pitty, no siempre es la mejor variante la que hace la carrera ...

    
respondido por el cmaster 02.04.2016 - 00:22
1

La forma más fácil de recordar es cambiar la palabra "endian" por "startian". Los enteros iniciales grandes comienzan con el extremo grande (por ejemplo, los bytes más significativos vienen primero), y los enteros iniciales pequeños comienzan con el final pequeño (por ejemplo, los bytes menos significativos vienen primero).

    
respondido por el dreamlax 28.04.2016 - 03:17
-1

En big endian: (orden ascendente)

Bajo a alto es decir,

0 | 1 | 2 | 3 ^ ^ Inicio final

En little-Endian: (orden descendente)

Alto a bajo

es decir,

3 | 2 | 1 | 0 ^ ^ Inicio final

    
respondido por el user222896 02.04.2016 - 00:02

Lea otras preguntas en las etiquetas