为了账号安全,请及时绑定邮箱和手机立即绑定

位运算符

标签:
JavaScript

位运算符

这套运算符针对的是整数,所以对 JavaScript 完全无用,因为 JavaScript 内部,所有数字都保存为双精度浮点数。如果使用它们的话,JavaScript 不得不将运算数先转为整数,然后再进行运算,这样就降低了速度。而且"按位与运算符"&同"逻辑与运算符"&&,很容易混淆。

& AND( 如果两位都是 1 则设置每位为 1)

说明

  0101
& 0001
= 0001

应用

/* 奇偶判断 */

n&1===1 // true 奇数,false偶数

| OR (如果两位之一为 1 则设置每位为 1)

说明

   0101
|  0001
=  0101

应用


^ XOR (如果两位只有一位为 1 则设置每位为 1)

说明

   0101
^  0001
=  0100

应用

/* 切换 0和1 */
let toggle = 1
toggle ^= 1 // 0
toggle ^= 1 // 1


/* 两值交换 */

let a=1,b=2
a^=b
b^=a
a^=b
// a===2 b===1

~ NOT (反转所有位)

说明

~  0101
=  1010

应用

/* 判断项是否存在 */



/* 保留整数位( 对于浮点数,~~value可以代替parseInt(value),而且前者效率更高些) */
~~ 1.2 // => 1
~~ -1.2 // => -1

<< 零填充左位移:通过从右推入零向左位移,并使最左边的位脱落。

说明


应用

/* 加倍 */
let num = 2
num=num<<1 // => 4

/* 迅速得出2的次方 */
1<<2 // 2^2 => 4
1<<10 // 2^10 => 1024

>> 零填充右位移:通过从左推入最左位的拷贝来向右位移,并使最右边的位脱落。

说明


应用

arr.splice(arr.indexOf(4)>>>0) // 负数转换成正数
// -1>>>0  => 4294967295

>>> 零填充右位移:通过从左推入零来向右位移,并使最右边的位脱落

说明


应用

arr.splice(arr.indexOf(4)>>>0) // 元素不存在时返回[]
// -1>>>0  => 4294967295

其他

使用 !! 将数字转为布尔值

所有非0的值都是true,包括负数、浮点数:

console.log(!!7);       // true
console.log(!!0);       // false
console.log(!!-1);      // true
console.log(!!0.71);    // true

使用toString(16)取随机字符串

Math.random().toString(16).substring(2, 15); // .substring() 的第二个参数控制取多少位 (最多可取13位)

for 循环条件的简写

for(let i = 0; i < arr.length; i++) {...}
for(let i = arr.length; i--;) {...} // 注意 i-- 后面的分号别漏了
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消