JavaScript位运算详解与实战应用

作者:纸飞机

时间:2026-10-30

浏览:242

本文详解JavaScript中位运算的基础机制,包括32位补码处理规则及AND、OR、XOR、NOT、移位等核心运算符。通过具体代码示例展示各运算符的行为,并深入探讨位运算在判断2的幂、奇偶性检测及标志位管理中的实际应用场景,帮助开发者掌握底层数据处理技巧。

文章目录

位运算基础

在JavaScript中执行位运算时,所有参与运算的操作数都会被视为32位补码形式的二进制字符串。如果二进制串长度不足32位,则高位补0;如果超出32位,则丢弃最高有效位。运算结束后,结果也会以补码反转的形式返回。

&:位 AND。仅当两个操作数对应位均为 1 时,该位的结果值为 1。例如:

const a = 120; // 0b000...1111000
const b = 11; //  0b000...0001011
a & b; // 8 = 0b000...1000
  • &=:位 AND 赋值。两个操作数做位 AND 运算,并将结果赋值给第一个操作数

|:位 OR。只要两个操作数对应位的其中一个为 1,该位的结果值便为 1。例如:

const a = 5; // 0b000...0101
const b = 3; // 0b000...0011
a | b; // 7 = 0b000...0111
  • |=:位 OR 赋值。两个操作数做位 OR 运算,并将结果赋值给第一个操作数

^:位 XOR。当两个操作数对应位中仅有一个为 1 时,该位的结果值为 1。例如:

const a = 5; // 0b000...0101
const b = 3; // 0b000...0011
a ^ b; // 6 = 0b000...0110
  • ^=:位 XOR 赋值。两个操作数做位 XOR 运算,并将结果赋值给第一个操作数
  • ~:位 NOT。将操作数按位取反。运算结果满足~x === -(x+1)

<<:左移位。将第一个操作数向左移动指定位。左边移出位被抛弃,右边多出位由补 0。例如:

const a = 9; // 0b000...001001
const b = 2;
a << b; // 36 = 0b000...100100

>>:带符号右移位。将第一个操作数向右移动指定位。右边移出位被抛弃,左边多出位由原先最左值补齐

const a = 36; // 0b000...100100
const b = 2;
a >> b; // 9  =  0b000...001001
  • >>>:无符号右移位。将第一个操作数向右移动指定位。右边移出位被抛弃,左边多出位由补 0

实际应用

判断整数是否为 2 的幂

function isPowerOfTwo(n) {
    return n > 0 && ((n - 1) & n) === 0;
}

判断整数奇偶性

function isOdd(n) {
    return (n & 1) === 1;
}

标志判断

const canFly = 1 << 0;
const canRun = 1 << 1;
const canSwim = 1 << 2;
const canJump = 1 << 3;
let flags = 0;
// 添加标志
flags |= canFly;
flags |= canJump;
// 判断标志
!!(flags & canFly); // true
!!(flags & canJump); // true
// 清除标志
flags &= ~canFly;
!!(flags & canFly); // false

以上就是JavaScript 位运算及实际应用的详细内容,更多关于JavaScript 位运算及实际应用的资料请关注本站其它相关文章!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章