Побитовый сдвиг и byte order
Допустим есть две машины одна с little-endian, другая с big-endian, на них выполняется побитовый сдвиг числа.
unsigned int a = 0x80000000;
unsigned int b = a >> (sizeof(int) * CHAR_BIT) - 1; // <-- Будет ли результат одинаковый на обеих машинах? (1)
Будет ли результат одинаков на обеих машинах?
Примечание. Относительно недавно я задавал похожий вопрос (про битовые операции в целом и там ответ оказался достаточно прост и очевиден, что логично), но я не уверен, что тот ответ распространяется на побитовый сдвиг.
Ответы (1 шт):
Автор решения: HolyBlackCat
→ Ссылка
Да, результат не зависит от endianness. (В смысле число будет то же, а представление в памяти конечно другое.)
<<
и >>
в стандерте определены через арифметические операции - умножить/поделить на степень двойки, и т.д.