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

Спасибо, что спросили; JDK не взаимодействует с реестром Windows.

Тем не менее, JRE делает в некоторых случаях.

Ссылка: http://www.rgagnon.com/javadetails/java-0604.html

68
задан Community 23 May 2017 в 11:46
поделиться

4 ответа

Порядок байтов имеет значение только для размещения данных в памяти. Как только данные загружаются процессором для обработки, порядок следования байтов полностью не имеет значения. Сдвиги, побитовые операции и т. Д. Выполняются так, как и следовало ожидать (данные логически разложены как бит от младшего к старшему) независимо от порядка следования байтов.

70
ответ дан 24 November 2019 в 14:12
поделиться

Как уже упоминалось, сдвиги определяются спецификацией языка C и не зависят от порядка байтов, но реализация сдвига вправо может варьироваться в зависимости от того, использует ли архитектура одно или два дополнения арифметики. .

5
ответ дан 24 November 2019 в 14:12
поделиться

Поразрядные операторы абстрагируют порядок байтов. Например, оператор >> всегда сдвигает биты в сторону младшего разряда. Однако это не означает, что вы можете полностью игнорировать порядок байтов при их использовании, например, имея дело с отдельными байтами в более крупной структуре, вы не всегда можете предполагать, что они попадут в одно и то же место.

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];

Чтобы уточнить, я уверен, не в принципиальном несогласии с другими ответами здесь. Я пытаюсь подчеркнуть, что, хотя побитовые операторы по существу нейтральны с порядком байтов, вы не можете игнорировать эффект порядка байтов в вашем коде, особенно в сочетании с другими операторами.

63
ответ дан 24 November 2019 в 14:12
поделиться

Вы не указали язык, но обычно языки программирования, такие как C, абстрагируют порядок байтов в побитовых операциях. Так что нет, в побитовых операциях это не имеет значения.

1
ответ дан 24 November 2019 в 14:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: