TypeScript - Esempi di operatori bit per bit
Assumi la variabile A = 2 e B = 3
Operatore | Descrizione | Esempio |
---|---|---|
& (AND bit per bit) | Esegue un'operazione booleana AND su ogni bit dei suoi argomenti interi. | (A e B) è 2 |
| (BitWise OR) | Esegue un'operazione booleana OR su ogni bit dei suoi argomenti interi. | (A | B) è 3 |
^ (XOR bit per bit) | Esegue un'operazione booleana OR esclusivo su ogni bit dei suoi argomenti interi. OR esclusivo significa che uno degli operandi uno è vero o l'operando due è vero, ma non entrambi. | (A ^ B) è 1 |
~ (Bitwise Not) | È un operatore unario e opera invertendo tutti i bit nell'operando. | (~ B) è -4 |
<< (Maiusc sinistro) | Sposta tutti i bit nel suo primo operando a sinistra del numero di posizioni specificato nel secondo operando. I nuovi bit vengono riempiti con zeri. Spostare un valore a sinistra di una posizione equivale a moltiplicarlo per 2, spostare due posizioni equivale a moltiplicarlo per 4 e così via. | (A << 1) è 4 |
>> (Maiusc destro) | Operatore binario di spostamento a destra. Il valore dell'operando sinistro viene spostato a destra del numero di bit specificato dall'operando destro. | (A >> 1) è 1 |
>>> (Spostamento a destra con zero) | Questo operatore è proprio come l'operatore >>, tranne per il fatto che i bit spostati a sinistra sono sempre zero. | (A >>> 1) è 1 |
Esempio
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);
Durante la compilazione, genererà il seguente codice 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);
L'output del programma sopra è dato di seguito:
(a & b) => 2
(a | b) => 3
(a ^ b) => 1
(~b) => -4
(a << b) => 16
(a >> b) => 0