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