¿Tengo razón en que los dos enteros cortos constarán de 2 bytes menos significativos de este entero de 4 bits?
Sí, por definición.
La diferencia entre bigE y littleE es si el byte menos significativo está en la dirección más baja o no. En un pequeño procesador endian, las direcciones más bajas son las menos significativas, x86 lo hace de esta manera.
Estos dan el mismo resultado en poco E.
short s = (short)i;
short s = *(short*)&i;
En un procesador de big endian, las direcciones más altos son los bits menos significativos, 68000 y Power PC hacerlo de esta manera (en realidad Power PC puede ser a la vez , sino máquinas PPC de Apple utilizan BIGE)
Estos dan el mismo resultado en gran E.
short s = (short)i;
short s = ((short*)&i)[1]; // (assuming i is 4 byte int)
por lo tanto, como se puede ver, Little endian le permite llegar a la LEA t bits significativos de un operando sin saber qué tan grande es. La pequeña E tiene ventajas para preservar la compatibilidad con versiones anteriores.
¿Cuál es la ventaja de big endian? Crea volcados hexadecimales que son más fáciles de leer.
Realmente, los ingenieros de Motorola pensaban que aliviar la carga de leer volcados hexadecimales era más importante que la compatibilidad con versiones anteriores. Los ingenieros de Intel creían lo contrario.
Sugiero usar las matemáticas para reducir el número a un rango apropiado (tamaño) antes de copiar. Los compiladores mantendrán Endianness para que no tenga muchas preocupaciones. Copiar partes de las variables genera preocupaciones de Endianness como lo ha demostrado. –