TypeScript - 位运算符示例
假设变量 A = 2 且 B = 3
运算符 | 描述 | 示例 |
---|---|---|
& (按位与) | 它对其整数参数的每一位执行布尔 AND 运算。 | (A & B) 为 2 |
| (按位或) | 它对其整数参数的每一位执行布尔或运算。 | (A | B) 为 3 |
^ (按位异或) | 它对其整数参数的每一位执行布尔异或运算。 异或意味着操作数一为真或操作数二为真,但不能两者都为真。 | (A ^ B) 为 1 |
~ (按位非) | 它是一个一元运算符,通过反转操作数中的所有位进行运算。 | (~B) 为 -4 |
<< (左移) | 它将第一个操作数中的所有位向左移动第二个操作数中指定的位数。 新的位用零填充。 将值左移一位相当于乘以 2,左移两位相当于乘以 4,依此类推。 | (A << 1) 为 4 |
>> (右移) | 二进制右移运算符。 左操作数的值向右移动右操作数指定的位数。 | (A >> 1) 为 1 |
>>> (右移为零) | 此运算符就像 >> 运算符,但左侧移入的位始终为零。 | (A >>> 1) 为 1 |
示例
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);
编译时,它将生成以下 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);
上述程序的输出如下 −
(a & b) => 2 (a | b) => 3 (a ^ b) => 1 (~b) => -4 (a << b) => 16 (a >> b) => 0