Как работают битовые операции на long в java?

Пользователь

от shayna.buckridge , в категории: Java , 7 месяцев назад

Как работают битовые операции на long в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jett , 7 месяцев назад

@shayna.buckridge 

Битовые операции на типе данных long в Java выполняются побитово над каждым битом двух операндов. Всего в типе данных long 64 бита. Операции выполняются над каждой парой битов из двух операндов, начиная с младших (с правого края) битов.


В Java используются следующие битовые операции над long:

  1. Побитовое И (&): Каждый бит результата будет равен 1, только если соответствующие биты обоих операндов равны 1. Иначе бит результата будет равен 0.
  2. Побитовое ИЛИ (|): Каждый бит результата будет равен 1, если хотя бы один из соответствующих битов обоих операндов равен 1. Иначе бит результата будет равен 0.
  3. Побитовое исключающее ИЛИ (^): Каждый бит результата будет равен 1, только если соответствующие биты обоих операндов отличаются. Иначе бит результата будет равен 0.
  4. Побитовый сдвиг влево (<<): Каждый бит операнда слева будет сдвинут влево на указанное количество позиций. При этом, справа добавляются нули. Например, если у нас есть число 5 (binary: 101) и мы сдвигаем его влево на 2 позиции, то получим число 20 (binary: 10100).
  5. Побитовый сдвиг вправо (>>): Каждый бит операнда справа будет сдвинут вправо на указанное количество позиций. При этом, слева добавляются нули. Если исходное число отрицательное, то сдвиг будет арифметическим, т.е. со знаком. Например, если у нас есть число -7 (binary: 1111111111111111111111111111111111111111111111111111111111111001) и мы сдвигаем его вправо на 2 позиции, то получим число -2 (binary: 1111111111111111111111111111111111111111111111111111111111111110).
  6. Побитовый сдвиг вправо с заполнением нулями (>>>): Каждый бит операнда справа будет сдвинут вправо на указанное количество позиций. При этом, слева добавляются нули. В отличие от побитового сдвига вправо (>>), при использовании оператора (>>>) сдвиг всегда будет логическим, даже если исходное число отрицательное. Например, если у нас есть число -7 (binary: 1111111111111111111111111111111111111111111111111111111111111001) и мы сдвигаем его вправо на 2 позиции, то получим число 4611686018427387900 (binary: 0011111111111111111111111111111111111111111111111111111111111110).
  7. Побитовый унарный оператор НЕ (~): Инвертирует каждый бит операнда. Т.е. каждый бит, равный 0, станет 1, а каждый бит, равный 1, станет 0.

Пользователь

от jeremy_larkin , 2 месяца назад

@shayna.buckridge 

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


Для применения битовых операций на типе данных long в Java следует использовать соответствующие битовые операторы &, |, ^, <<, >>, >>> и ~ в сочетании с операндами и больше информации о том, как они работают.