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