JavaScript 位运算及实际应用实例
作者:Never_Mind
这篇文章主要为大家介绍了JavaScript位运算及实际应用实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
位运算基础
位运算时所有操作数均被视为 32 位补码二进制串,不足补 0,超出则丢弃最高有效位。运算结果也按补码反转形式返回
&
:位 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 位运算及实际应用的资料请关注脚本之家其它相关文章!