Прав ли я, что оба коротких целых числа будут состоять из 2 младших байт этого целого числа 4 байта?
Да, по определению.
Разница между bigE и littleE в том, находится ли младший байт по младшему адресу или нет. На процессоре с прямым порядком байтов младшие адреса - младшие биты, x86 делает это так.
Они дают тот же результат на маленькой E.
short s = (short)i;
short s = *(short*)&i;
На процессоре с прямым порядком байтов старшие адреса - младшие биты, 68000 и Power PC делают это таким образом (фактически, Power PC может быть и тем и другим, но машины PPC от Apple используют bigE)
Они дают тот же результат на большом E.
short s = (short)i;
short s = ((short*)&i)[1]; // (assuming i is 4 byte int)
Итак, как вы можете видеть, little endian позволяет вам получить младшие биты операнда , не зная, насколько он велик . маленькая E имеет преимущества для сохранения обратной совместимости.
Так в чем же преимущество big endian? Он создает шестнадцатеричные дампы, которые легче читать.
Действительно, инженеры Motorola считали, что облегчение бремени чтения шестнадцатеричных дампов важнее обратной совместимости. Инженеры Intel считали обратное.