TypeScript - exemplos de operadores bit a bit

Suponha que a variável A = 2 e B = 3

Operador Descrição Exemplo
& (Bit a bit AND) Ele executa uma operação booleana AND em cada bit de seus argumentos inteiros. (A e B) é 2
| (BitWise OU) Ele executa uma operação booleana OR em cada bit de seus argumentos inteiros. (A | B) é 3
^ (XOR bit a bit) Ele executa uma operação booleana OU exclusiva em cada bit de seus argumentos inteiros. OU exclusivo significa que o operando um é verdadeiro ou o operando dois é verdadeiro, mas não ambos. (A ^ B) é 1
~ (Bit a bit não) É um operador unário e opera invertendo todos os bits do operando. (~ B) é -4
<< (Shift à esquerda) Ele move todos os bits em seu primeiro operando para a esquerda pelo número de casas especificado no segundo operando. Novos bits são preenchidos com zeros. Deslocar um valor para a esquerda em uma posição é equivalente a multiplicá-lo por 2, deslocar duas posições é equivalente a multiplicar por 4 e assim por diante. (A << 1) é 4
>> (Shift à direita) Operador binário de deslocamento à direita. O valor do operando esquerdo é movido para a direita pelo número de bits especificado pelo operando direito. (A >> 1) é 1
>>> (deslocamento à direita com zero) Esse operador é como o operador >>, exceto que os bits deslocados à esquerda são sempre zero. (A >>> 1) é 1

Exemplo

var a:number = 2;   // Bit presentation 10 
var b:number = 3;   // Bit presentation 11
 
var result; 
     
result = (a & b);     
console.log("(a & b) => ",result)
          
result = (a | b);          
console.log("(a | b) => ",result)  
       
result = (a ^ b);  
console.log("(a ^ b) => ",result);
 
result = (~b); 
console.log("(~b) => ",result);

result = (a << b); 
console.log("(a << b) => ",result); 

result = (a >> b); 
console.log("(a >> b) => ",result);

Na compilação, ele irá gerar o seguinte código JavaScript -

//Generated by typescript 1.8.10
var a = 2;   // Bit presentation 10
var b = 3;   // Bit presentation 11
var result;

result = (a & b);
console.log("(a & b) => ", result);

result = (a | b);
console.log("(a | b) => ", result);

result = (a ^ b);
console.log("(a ^ b) => ", result);

result = (~b);
console.log("(~b) => ", result);

result = (a << b);
console.log("(a << b) => ", result);

result = (a >> b);
console.log("(a >> b) => ", result);

O resultado do programa acima é dado abaixo -

(a & b) =>  2 
(a | b) =>  3 
(a ^ b) =>  1 
(~b) =>  -4 
(a << b) =>  16 
(a >> b) =>  0