Что такое |оператор делает в Java? - PullRequest
2 голосов
/ 10 октября 2019

Я прочитал некоторый код Java и наткнулся на оператор | . Может кто-нибудь, что делает оператор в этом контексте?

for (int i=0; i<8; i++) {
            x[i] = hexBytes[i*4]   << 24
                 | hexBytes[i*4+1] << 16
                 | hexBytes[i*4+2] << 8
                 | hexBytes[i*4+3];
}

Ответы [ 3 ]

1 голос
/ 10 октября 2019

Побитовый ORAND) может использоваться для обработки битов. AND позволяет извлечь набор битов: int lowest8bits = 0xFFFFF & 0xFF;.

С помощью OR вы можете вставлять биты. В приведенном выше коде 4 байта вставляются в один и тот же int, смещая их в правильное положение и OR их.

                           10010010 byte
                  10010010 00000000 << 8
00000000 00000000 00000000 00010110 The int we're building
00000000 00000000 10010010 00010110 End result in int after OR
1 голос
/ 10 октября 2019

Используются следующие операторы:

  1. "<< (сдвиг влево)": двоичный оператор сдвига влево. Значение левого операнда перемещается влево на количество битов, указанное правым операндом. <li>">> (сдвиг вправо)": оператор двоичного сдвига вправо. Значение левого операнда перемещается вправо на количество битов, указанное правым операндом.
  2. "| (поразрядно или)": двоичный оператор ИЛИ копирует бит, если он существует в любом из операндов.

В вашем коде:

hexBytes[i*4]   << 24

двоичное значение hexBytes [i * 4] смещено влево на 24 бита. то же самое с другими, и результат - ИЛИ побитовым |оператор.

0 голосов
/ 10 октября 2019

Это побитовое или. См. Эту статью для получения дополнительной информации: https://www.baeldung.com/java-bitwise-operators

3.1 относится к этому конкретному оператору. Это также объясняет левый сдвиг << оператор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...