JavaScript 位运算及实际应用实例

 更新时间:2023年08月14日 08:37:36   作者: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 位运算及实际应用的资料请关注脚本之家其它相关文章!

相关文章

  • js中点击空白区域时文本框与隐藏层的显示与影藏问题

    js中点击空白区域时文本框与隐藏层的显示与影藏问题

    文本框获得焦点的时在文本框的下方显示一个浮动层,点击文本框隐藏浮动层,下面为大家介绍下鼠标点击时文本框与隐藏层处理问题,感兴趣的朋友可以参考下
    2013-08-08
  • JS Math对象与Math方法实例小结

    JS Math对象与Math方法实例小结

    这篇文章主要介绍了JS Math对象与Math方法,结合实例形式总结分析了javascript中math对象常用属性与方法相关使用技巧,需要的朋友可以参考下
    2019-07-07
  • 微信小程序 (地址选择1)--选取搜索地点并显示效果

    微信小程序 (地址选择1)--选取搜索地点并显示效果

    这篇文章主要介绍了微信小程序 (地址选择1)--选取搜索地点并显示效果,实现思路是通过拖动地图,搜索地址,选择地址并将地址值传给文本框,具体实例代码跟随小编一起看看吧
    2019-12-12
  • IE11下使用canvas.toDataURL报SecurityError错误的解决方法

    IE11下使用canvas.toDataURL报SecurityError错误的解决方法

    这篇文章主要给大家介绍了关于在IE11下使用canvas.toDataURL报SecurityError错误的解决方法,文中通过示例代码介绍的非常详细,对同样遇到这个问题的朋友们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11
  • Javascript实现视频文件播放功能(示例详解)

    Javascript实现视频文件播放功能(示例详解)

    这篇文章主要介绍了Javascript实现视频文件播放功能,使用CSS完成相应的布局样式,利用JavaScript函数来监听进度条,然后使用鼠标点击按钮实现对视频的播放,需要的朋友可以参考下
    2023-10-10
  • 微信小程序如何获取图片宽度与高度

    微信小程序如何获取图片宽度与高度

    这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • JS使用svg-captcha生成图片验证码的示例代码

    JS使用svg-captcha生成图片验证码的示例代码

    nodejs(nestjs)后端开发过程中会有一个需要生成图片验证码的功能,其能减少机器人攻击操作,本文我们通过 svg-captcha,来实现一个验证码功能,并且小小的优化一下其逻辑,需要的朋友可以参考下
    2024-06-06
  • JavaScript事件监听器详细介绍

    JavaScript事件监听器详细介绍

    这篇文章主要介绍了JavaScript事件监听器详细介绍,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-09-09
  • JS手写bind之处理new的情况详解

    JS手写bind之处理new的情况详解

    虽然很少会遇到给bind返回的函数做new操作的场景,但面试中还是会涉及到的,所以本文将实现一下兼容new操作的bind写法,顺便学习一下new操作符,需要的可以参考一下
    2022-07-07
  • 微信小程序简单实现form表单获取输入数据功能示例

    微信小程序简单实现form表单获取输入数据功能示例

    这篇文章主要介绍了微信小程序简单实现form表单获取输入数据功能,涉及微信小程序针对form表单的事件绑定及数据获取等相关操作技巧,需要的朋友可以参考下
    2017-11-11

最新评论