温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Js移位操作及其应用是怎样的

发布时间:2021-11-11 09:45:01 来源:亿速云 阅读:134 作者:柒染 栏目:开发技术

Js移位操作及其应用是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

  我在看lodash实现一些工具函数的源码时发现lodash定义了一些bitMask的常量。我一开始没弄明这是什么鬼东西,用Google搜了一圈才发现是我之前接触过得位操作运算一类的东西。并且源码和我搜索的资料给我提供了另一种使用场景,感觉应用性还是蛮强的,所以干脆总结一下好了。

  什么是移位操作

  先以下面的表达式展开需要了解的基础知识。

  //lodash源码里定义的常量

  varCLONE_DEEP_FLAG=1

  JavaScript遵循IEEE754标准,无论是整数还是小数都是用双精度浮点数表述,双精度浮点数8个字节,表示64位二进制位,所以双精度浮点数的表示范围是-2^63~2^63-1。但是在进行位操作时则是用的32位数表示,也就是4个字节,表示范围为`-2^31~2^31-1,其中无论是32位还是64位,最高位都是符号位,0表示正数,1表示负数。

  上面的表达式在进行位操作就会转换成下面这种,如果超过32位了,那超过的部分就会全部省去。

  00000000000000000000000000000001

  移位操作符有哪些

  下面介绍几种常用的操作符。

  &(位与)

  leta=1,

  b=2

  console.log(a&b)//0

  //0001

  //0010

  //=0000

  把变量a和变量b都展开成32位二进制数,省去前面的0,a的二进制表示为0001,b为0010,接着就是对应位数的二进制位比较,如果相同就是1,否则为0。

  |(位或)

  leta=1,

  b=2

  console.log(a|b)//3

  //0001

  //0010

  //=0011

  参照上面一种,不同的是相同的二进制位上,只要有一个是1,则结果就是1,所以就是0011。

  ^(位异或)

  这个和|有点区别,相同的地方在于如果同一位数上的数只要一个是1,则这个位数的结果就是1,不同的地方在于相同的位数上如果数值相同,则结果为0.

  总之,移位操作给大家简单的介绍了一些,希望大家多看看。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

js
AI