js的一些运算


或运算

在 JavaScript 中,或运算符用符号 | 表示。它是一个按位运算符,它对两个操作数的每一位执行“或”运算。

或运算的规则如下:

如果两个操作数的相应位都是 0,则结果为 0。
如果两个操作数的相应位至少有一个是 1,则结果为 1。
例如,假设有两个二进制数 10101100,它们进行或运算后的结果如下:

  1010
| 1100
  ----
  1110

异或运算

在 JavaScript 中,异或运算符用符号 ^ 表示。它是一个按位运算符,它对两个操作数的每一位执行“异或”运算。

异或运算的规则如下:

如果两个操作数的相应位不同,则结果为 1。
如果两个操作数的相应位相同,则结果为 0。
例如,假设有两个二进制数 10101100,它们进行异或运算后的结果如下:

  1010
^ 1100
  ----
  0110

实例:交换两个变量的值

a = a ^ b;
b = a ^ b;
a = a ^ b;

移位运算

在 JavaScript 中,移位运算符包括左移位运算符 <<、右移位运算符 >> 和带符号右移位运算符 >>>。这些运算符都是按位运算符,用于将二进制数的位向左或向右移动指定的位数。

左移位运算符 << 将一个数的二进制位向左移动指定的位数,空出的位用 0 填充。例如:

const num = 5; // 二进制:0101
const result = num << 2; // 左移两位,得到二进制数 010100
console.log(result); // 输出 20

在这个例子中,我们将数字 5 的二进制位向左移动了两位,得到了二进制数 010100,它的十进制值为 20。

右移位运算符 >> 将一个数的二进制位向右移动指定的位数,空出的位用符号位填充。例如:

const num = -5; // 二进制:11111111111111111111111111111011(补码表示)
const result = num >> 2; // 右移两位,得到二进制数 11111111111111111111111111111110(补码表示)
console.log(result); // 输出 -2

在这个例子中,我们将数字 -5 的二进制位向右移动了两位,得到了二进制数 11111111111111111111111111111110(补码表示),它的十进制值为 -2。

带符号右移位运算符 >>> 将一个数的二进制位向右移动指定的位数,空出的位用 0 填充。例如:

const num = -5; // 二进制:11111111111111111111111111111011(补码表示)
const result = num >>> 2; // 右移两位,得到二进制数 00111111111111111111111111111110
console.log(result); // 输出 1073741822

在这个例子中,我们将数字 -5 的二进制位向右移动了两位,得到了二进制数 00111111111111111111111111111110,它的十进制值为 1073741822。注意,在使用带符号右移位运算符时,负数会被转换为无符号整数,因此结果可能会比原来的值大。


文章作者: Icon
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Icon !
评论
  目录