Что делает оператор | = в Java?

Прочитав руководство для Android для уведомлений, я наткнулся на это:

Добавление вибрации

Вы можете предупредить пользователя с шаблоном вибрации по умолчанию или с помощью вибрационный шаблон, определенный вашим приложением.

Чтобы использовать шаблон по умолчанию, добавьте "DEFAULT_VIBRATE" в поле по умолчанию:

notification.defaults |= Notification.DEFAULT_VIBRATE;

Это ясно: он добавляет флаг DEFAULT_VIBRATE к флагам по умолчанию объекта уведомления. Но что делает оператор |= в Java? Это похоже на "OR", но как это работает?

Можете ли вы привести пример с помощью чисел?

Спасибо

Ответ 1

|= является оператором присваивания побитовым ИЛИ. Он принимает текущее значение LHS, побитовое или RHS, и присваивает значение обратно LHS (аналогично += делает с добавлением).

Например:

foo = 32;   // 32 =      0b00100000
bar = 9;    //  9 =      0b00001001
baz = 10;   // 10 =      0b00001010
foo |= bar; // 32 | 9  = 0b00101001 = 41
            // now foo = 41
foo |= baz; // 41 | 10 = 0b00101011 = 43
            // now foo = 43

Ответ 2

a |= x является a = a | x, а | является "побитовым включением ИЛИ"

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

Каждый оператор имеет форму назначения:

+= -= *= /= %= &= ^= |= <<= >>= >>>=

Где a OP= x переводится на a = a OP x

И о побитовые операции:

   0101 (decimal 5)
OR 0011 (decimal 3)
 = 0111 (decimal 7)

Побитовое ИЛИ может использоваться в ситуациях, когда набор бит используется как флаги; биты в одной двоичной цифре могут представлять собой отдельную логическую переменную. Применение побитовой операции ИЛИ к цифре вместе с битовой парой, содержащей 1 в некоторых позициях, приведет к новой цифре с установленными битами. Например:

Ответ 3

Это короткое обозначение руки для выполнения побитового OR и назначения за один шаг.

x |= y эквивалентно x = x | y

Это можно сделать со многими операторами, например:

x += y
x -= y
x /= y
x *= y
etc.

Пример побитового ИЛИ с использованием чисел. Если в операндах установлен бит, бит будет установлен в результате. Итак, если:

x = 0001 and
y = 1100 then
--------
r = 1101

Ответ 4

Это бит-бит оператора OR. Если notifications.default - 0b00000001 в двоичной форме и Notification.DEFAULT_VIBRATE - 0b11000000, тогда результат будет 0b11000001.

Ответ 6

побитовый оператор OR