tutoriais devOs operadores basicamente são esses:
|	OR
&	AND
^	XOR
~	NOT
Os operadores bit a bit fazem a mesma coisa que os seus correspondentes na programação normal a única diferença que você tem que entender é que eles operam bit a bit e não o número que você passa, exemplo:
7 | 8 = 15
Não faz sentido nenhum né? Mas é o que te falei, ele compara bit a bit e não o número que você está vendo, na verdade ele comparou:
0111 | 1000 = 1111
Comparando bit a bit dessa forma:
0 | 1 = 1
1 | 0 = 1
1 | 0 = 1
1 | 0 = 1
Deu pra perceber? Pra fazer sentido você precisa converter para binário e ver cada bit pra ver como ele comparou.
Ele é a mesma coisa que o &&, só retorna true se todos os comparados forem true,  só que ele compara os bits do número que você passa e não o número. Basicamente ele compara os bits do integer e retorna se as comparações foram true ou false
Exemplo
4 & 6 = 4
Por que? Veja a representação deles em binário:
4 -> 100  (em binário)
6 -> 110
Então ele compara bit a bit  (nao importa se comparar o 4 ou o 6 antes, a ordem dos fatores nao altera o resultado)
1 AND 1 = 1
1 AND 0 = 0
0 AND 0 = 0
Repare que o binário gerado na comparação foi 100(em binário) que coincidentemente é 4(em inteiro)
Outro exemplo:
6 & 9 = 0
Por que? Veja a representação deles em binário:
6 ->  110
9 -> 1001
Então comparando bit a bit, Onde tem espaço em branco colocamos 0:
0 AND 1 = 0
1 AND 0 = 0
1 AND 0 = 0
0 AND 1 = 0
O binário gerado foi 0000 e esse número em decimal naturalmente é 0
Espero que tenha entendido
Ele faz a mesma coisa que o XOR na programação normal, só retorna true se apenas um dos bits comparados forem true.
Tabela verdade
| A | B | Resultado | 
|---|---|---|
| 1 | 0 | 1 | 
| 0 | 0 | 0 | 
| 1 | 1 | 0 | 
metadata={"id": 327, "createdAt": "2019-08-04 19:14:45.141538", "updatedAt": "2017-11-07 23:30:55.0"}