Побитовые операторы и "порядок байтов"

Поразрядные операторы абстрагируют endian порядок байтов. Например, оператор bitwise-shift >> всегда сдвигает биты в сторону bit-shift-operators младшего разряда. Однако endian это не означает, что вы можете bit-manipulation полностью игнорировать порядок byte-order байтов при их использовании, например, при bitwise-shift работе с отдельными байтами endianness в более крупной структуре big-endian вы не всегда можете предполагать, что endianness они попадут в одно и то же byte-order место.

short temp = 0x1234;
temp = temp >> 8;

// on little endian, c will be 0x12, on big endian, it will be 0x0
char c=((char*)&temp)[0];

Чтобы уточнить, я не bit-shift согласен с другими ответами big-endian здесь. Я пытаюсь подчеркнуть, что, хотя byte-order побитовые операторы по существу endian нейтральны с порядком байтов, вы bit-shift не можете игнорировать эффект bitwise порядка байтов в своем коде, особенно bitwise-shift в сочетании с другими операторами.

c

bit-manipulation

endianness

bit-shift

2022-09-06T05:27:46+00:00
Вопросы с похожей тематикой, как у вопроса:

Побитовые операторы и "порядок байтов"