返回

JavaScript位运算符:解锁数字底层的秘密

前端

在JavaScript世界中,位运算符提供了一种探索数字内部运作的强大工具,在数字的32位底层进行操作,带来惊人的运算速度。

位运算符直接在二进制数字位上执行操作,通过按位比较、移动和组合数字位来实现。这些操作为各种编程场景提供了强大的工具,从优化数据结构到提高计算效率。

以下是JavaScript中最常用的位运算符:

  • & 按位与
  • | 按位或
  • ^ 按位异或
  • ~ 按位取反
  • << 左移
  • >> 右移

让我们通过一些示例来深入了解这些运算符的实际应用:

按位与(&):

const num1 = 10; // 二进制:1010
const num2 = 6;  // 二进制:0110
const result = num1 & num2; // 二进制:0010 = 2

按位与运算符比较两个数字的位,如果两个位都为1,则结果位为1,否则为0。在上面的示例中,num1num2都只有两个位,按位与操作后,只有第一个位匹配,因此结果为2。

按位或(|):

const num1 = 10; // 二进制:1010
const num2 = 6;  // 二进制:0110
const result = num1 | num2; // 二进制:1110 = 14

按位或运算符比较两个数字的位,如果至少一个位为1,则结果位为1,否则为0。在上面的示例中,num1num2的位逐位进行或运算,结果为14。

按位异或(^):

const num1 = 10; // 二进制:1010
const num2 = 6;  // 二进制:0110
const result = num1 ^ num2; // 二进制:1100 = 12

按位异或运算符比较两个数字的位,如果两个位不同,则结果位为1,否则为0。在上面的示例中,num1num2的按位异或结果为12。

按位取反(~):

const num = 10; // 二进制:1010
const result = ~num; // 二进制:0101 = -11

按位取反运算符将数字的所有位取反,也就是将0变为1,1变为0。在上面的示例中,num按位取反后,结果为-11,因为它在内部表示为补码。

左移(<<):

const num = 10; // 二进制:1010
const result = num << 2; // 二进制:101000 = 40

左移运算符将数字的位向左移动指定的位数,并将多出的位用0填充。在上面的示例中,num左移2位,结果为40。

右移(>>):

const num = 10; // 二进制:1010
const result = num >> 2; // 二进制:0010 = 2

右移运算符将数字的位向右移动指定的位数,并将多出的位用符号位(最左边的位)填充。在上面的示例中,num右移2位,结果为2。

通过理解和应用位运算符,您可以在JavaScript应用程序中提高效率、优化代码并探索数字内部的奇妙世界。