栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

JS 位运算小结

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JS 位运算小结

位运算应用场景:
  1. 偷懒简写(|): 取整、断言
  2. 标志位判断 (&): 权限控制
  3. 去掉高位/低位(&): 比较特定位、子网掩码
  4. 数值交换(^): 加密算法、生成随机数/哈希
  5. 构造属性集(|): 边界判断
  6. 缺省数值类型值(|):默认端口
  7. 位填充(>>): HEX2RGB、leftPad
  8. 试图提升算术运算性能
位运算示例: 1. 求 2 的 n 次方:
bitwise ES5 ES6+
1 << n Math.pow(2, n) 2 ** n

原理: 左移一位, 相当于将原数值与 2 相乘一次 , 即 m << n === m * Math.pow(2, n)

2. 求中间索引
bitwise ES5 ES6+
arr.length >> 1 Math.floor(arr.length / 2)) -

原理: 右移一位,相当于原数值除 2 后向下取整

3. 判断索引存在
bitwise ES5 ES6+
!!~'abc'.indexOf('d') 'abc'.indexOf('d') !== -1 'abc'.includes('d')

原理: 按位非 ~-1 === 0

4. 变量交换
bitwise ES5 ES6+
a ^= b; b ^= a; a ^= b; t = a; b = a; b = t; [b, a] = [a, b]

原理: 按位异或 1 ^ 1 === 0, 0 ^ 0 === 1

5. 分支开关
bitwise ES5 ES6+
flag ^= 1; flag = flag ? 0 : 1; -

原理: 按位异或 1 ^ 1 === 0, 0 ^ 0 === 1

6. 截取整数位
bitwise ES5 ES6+
~~-9.9; -9.9>>0; parseInt(-9.9) Math.trunc(-9.9)

原理: 位运算会默认将非数字类型转换成数字类型再进行运算
注意:

  1. 以上值(还有 -9.9|0 ) 都为 -9, 而 Math.floor(-9.9) 值为 -10
  2. 位运算取整方法不适用超过32位整数最大值 2147483647 的数: 2147483649.4 | 0 的值为 -2147483647
参考:

[1] 二进制位运算符

[2] 巧用 JS 位运算

[3] 由left-pad扯到JS中的位运算

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/246867.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号