Побитовый сдвиг и byte order

Допустим есть две машины одна с little-endian, другая с big-endian, на них выполняется побитовый сдвиг числа.

unsigned int a = 0x80000000;
unsigned int b = a >> (sizeof(int) * CHAR_BIT) - 1; // <-- Будет ли результат одинаковый на обеих машинах? (1)

Будет ли результат одинаков на обеих машинах?


Примечание. Относительно недавно я задавал похожий вопрос (про битовые операции в целом и там ответ оказался достаточно прост и очевиден, что логично), но я не уверен, что тот ответ распространяется на побитовый сдвиг.


Ответы (1 шт):

Автор решения: HolyBlackCat

Да, результат не зависит от endianness. (В смысле число будет то же, а представление в памяти конечно другое.)

<< и >> в стандерте определены через арифметические операции - умножить/поделить на степень двойки, и т.д.

http://eel.is/c++draft/expr.shift

→ Ссылка