No trabajo todos los días con problemas big-endian y little-endian y, por lo tanto, me resulta muy difícil recordar cuál es qué.
Recientemente recibí una entrevista preguntando la diferencia entre los dos; Como no recordaba, decidí "adivinar" (50% de posibilidades, después de todo) pero fallé.
Entonces, ¿hay algún truco práctico ampliamente conocido para recordar cuál es la diferencia entre big endian y little endian?
endianness
Emiliano
fuente
fuente
Respuestas:
Siempre he pensado que se define de manera incorrecta, y ese es también el consejo para recordarlo. Como hablante no nativo de inglés, veo "fin" como lo opuesto a "inicio" (aunque obviamente "fin" puede significar ya sea fin, el principio final o el final). De todos modos, solo recuerdo que "está definido de manera incorrecta" :)
O, refiriéndose al poco endianness :
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 al orden de los subcomponentes direccionables individualmente dentro de la representación de un elemento de datos más grande ( como se explica en Wikipedia ).
fuente
Mi propio consejo:
fuente
La mejor manera de recordar esto es que los pueblos civilizados buscan variedad y, por lo tanto, comen sus huevos de manera diferente de lo que ordenan sus números. Mientras que escribimos dígitos decimales comenzando en los dígitos grandes primero (big endian), comemos huevos pasados por agua del pequeño final (little endian).
fuente
Los números big-endianos comienzan en el "gran final". Los números little-endian comienzan en el "pequeño final".
Ambos son una alusión al tema de dónde comenzar a comer su huevo, según los viajes de Gulliver.
En este caso, "fin" no es lo opuesto a inicio, solo significa cualquier extremo de una (cuerda | cuerda | número | secuencia), por lo que no se les llama "gran acabado" o "pequeño acabado" (que definitivamente sería lo contrario de "inicio").
fuente
La forma más fácil de recordar es cambiar la palabra "endian" en "startian". Los enteros startian grandes comienzan con el extremo grande (por ejemplo, los bytes más significativos son lo primero), y los enteros startian pequeños comienzan con el extremo pequeño (por ejemplo, los bytes menos significativos son lo primero).
fuente
Nunca pude recordar cuál es "big-endian" y cuál es "little-endian", pero conocía la 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 debe recordar que Intel x86 = little-endian. Y recuerde que x86 y ARM son muy, muy compatibles incluso con conjuntos de instrucciones totalmente diferentes.
fuente
Lo diría de esta manera: ¡Grande es hermoso!
Grande == hermosa == derecha.
El endianess correcto es el que puedes leer en un hexdump, que es el que pone primero el byte más significativo, como lo hace cualquier humano sano.
Poco == feo == mal.
Los hexdumps producidos por esta resistencia son tan incorrectos que huyes gritando "¡Cerebros!". 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 en él.
Pitty, no siempre es la mejor variante que hace que la carrera ...
fuente
Little == ugly == wrong
... "Incluso la persona más pequeña puede cambiar el curso del futuro" -Galadrial, LOTREn big endian: (orden ascendente)
Bajo a alto, es decir
0 | 1 | 2 | 3 ^ ^ Inicio Fin
En little-Endian: (orden descendente)
De alto a bajo
es decir
3 | 2 | 1 | 0 ^ ^ Inicio Fin
fuente