| — старший бит
0b11110000
                | — младший бит

DEC       BIN

0        0B00000000
1        0B00000001
2        0B00000010
3        0B00000011
4        0B00000100
5        0B00000101
6        0B00000110
7        0B00000111

Битовое И (&)

Если оба входных бита равны 1, результирующий бит равен 1, в ином случае бит равен 0.
   byte a = 0b00111001;
 byte b = 0b11001100;
 byte x = a & b // 0b00001000

Битовое ИЛИ (|)

Результат операции побитового ИЛИ двух бит будет 1, если хотя бы один из этих битов 1, иначе бит будет равен 0.
  byte a = 0b00111001;
  byte b = 0b11001100;
  byte x = a | b; // 0b11111101

Битовое XOR (^)

Результат операции побитового XOR двух бит будет равен 1, если хотя бы один из этих битов 1, и вернет 0, если оба бита будут равны 1.
  byte a = 0b00111001;
  byte b = 0b11001100;
  byte x = a ^ b; // 0b11110101

Битовое НЕ (~)

Побитовое НЕ меняет каждый бит на противоположный: 0 становится 1, а 1 становится 0.
  int a = 0b000111100111001;
  int x =  ~a; // 0b111000011000110 

Битовый сдвиг влево (<<)

Биты сдвинуться влево на указанную позицию.
  int a = 0b000111100111001;
  int x = a << 3; // 0b111100111001000

Битовый сдвиг вправо (>>)

Биты сдвинуться влево на указанную позицию.
  int a = 0b000111100111001;
  int x = c >> 3; // 0b000000111100111  

Составное битовое И(&=)

Оператор составного побитового И (&=) работает аналогично побитовому И, полученный результат присваивается первому значению.
Оператор составного побитового И (&=) часто используют чтобы перевести отдельные биты переменной в низкий уровень (0).
Пример очистки байта а, сброс всех битов кроме 3-го:
   byte a = 0b00001111;
   byte b = 0b00001000;
         // 0b00001000
   a &= b; //  a = a & b  

Составное битовое ИЛИ (|=)

Оператор составного побитового ИЛИ (|=) работает аналогично побитовому ИЛИ, полученный результат присваивается первому значению.
Оператор составного побитового ИЛИ (|=) часто используют чтобы перевести отдельные биты переменной в высокий уровень (1).
Пример перевода 4-го бита в высокий уровень:
   byte a = 0b00001111;
   byte b = 0b00010000;
         // 0b00011111
   a |= b; //  a = a | b  

Запись единичного бита

  byte a = 0b00000000;     // запись лог. 1 в 6 бит
  byte x = a |= (1 << 6);  // 0b01000000

 

  byte a = 0b11111111;     // запись лог. 0 в 6 бит
  byte x = a &= ~(1 << 6); // 0b10111111

 

  byte a = 0b11111111;     // инверсия 5 бита
  byte x = a ^= (1 << 5);  // 0b11011111