• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共299篇

    前端 - Javascript

关闭

返回栏目

关闭

返回前端 - Javascript栏目

26 - 运算符 - 位运算符 - 按位与、或、非等操作

作者:

贺及楼

成为作者

更新日期:2025-02-21 17:38:31

前端 - Javascript 《运算符 - 位运算符 - 按位与、或、非等操作》

在 JavaScript 的世界里,位运算符就像是一群隐藏在幕后的神秘魔法师,它们不常被提及,但在某些特定的场景下却能发挥出巨大的威力。今天,我们就来揭开位运算符的神秘面纱,了解按位与、或、非等操作的奇妙之处。

什么是位运算符

位运算符是对二进制位进行操作的运算符。在 JavaScript 中,所有的数字都是以 64 位浮点数存储的,但在进行位运算时,会先将数字转换为 32 位整数,然后再进行操作,最后再转换回 64 位浮点数。

按位与(&)

按位与运算符 & 会对两个数的每一位进行比较,如果两个对应位都为 1,则该位的结果为 1,否则为 0。

  1. let a = 5; // 二进制表示为 0101
  2. let b = 3; // 二进制表示为 0011
  3. let result = a & b; // 二进制结果为 0001,十进制为 1
  4. console.log(result);

在这个例子中,5 和 3 进行按位与操作,只有最后一位都是 1,所以结果是 1。按位与操作常用于判断一个数的奇偶性,因为奇数的二进制表示最后一位是 1,偶数是 0,所以一个数和 1 进行按位与操作,如果结果是 1 则为奇数,是 0 则为偶数。

  1. function isOdd(num) {
  2. return (num & 1) === 1;
  3. }
  4. console.log(isOdd(5));
  5. console.log(isOdd(6));

按位或(|)

按位或运算符 | 会对两个数的每一位进行比较,如果两个对应位中有一个为 1,则该位的结果为 1,只有当两个对应位都为 0 时,结果才为 0。

  1. let c = 5; // 二进制表示为 0101
  2. let d = 3; // 二进制表示为 0011
  3. let resultOr = c | d; // 二进制结果为 0111,十进制为 7
  4. console.log(resultOr);

在这个例子中,5 和 3 进行按位或操作,只要有一位是 1,结果对应的位就是 1,所以最终结果是 7。

按位非(~)

按位非运算符 ~ 会对一个数的每一位取反,即 0 变为 1,1 变为 0。

  1. let e = 5; // 二进制表示为 0101
  2. let resultNot = ~e; // 二进制结果为 1010(补码形式),十进制为 -6
  3. console.log(resultNot);

按位非操作的结果是原数加 1 后取负,这是因为计算机中负数是以补码形式存储的。

总结

运算符 名称 描述 示例
& 按位与 对应位都为 1 结果为 1,否则为 0 5 & 3 = 1
\ 按位或 对应位有一个为 1 结果为 1,都为 0 结果为 0 `5 3 = 7`
~ 按位非 每一位取反 ~5 = -6

位运算符虽然在日常开发中使用频率不高,但在处理一些底层操作、优化性能等方面有着独特的优势。掌握这些位运算符,就像是掌握了一把神奇的钥匙,能让你在 JavaScript 的世界里解锁更多的可能性。希望通过今天的介绍,你能对这些神秘的位运算符有更深入的了解。