首页 > js中的位运算中的几个特殊的数字含义?

js中的位运算中的几个特殊的数字含义?

最近在看bluebird中的源码,里面涉及到js中的位运算,对于位运算虽然不是很清楚,但查看文档,基本上明白了,但自始至终对于里面涉及的几个数字实在不明白,望各位指点迷津:

下面是涉及的代码段:

    if ((this._bitField & 117506048) !== 0) return;

    if ((bitField & 50397184) === 0)
    
    if ((bitField & 33554432) !== 0)
    
    if ((bitField & 16777216) !== 0)
    
    if ((bitField & 65536) !== 0)
    
    if ((bitField & 33554432) !== 0)
    
    if((bitField & 134217728) !== 0);
    

这些数字是不是有特殊的含义还是框架自定义的东西?


16777216转成二进制是1000000000000000000000000
65536转成二进制是10000000000000000
134217728转成二进制是1000000000000000000000000000

bitField 跟这些数字做与运算就是看bitField二进制的某一位上是否是1


没有深入研究,大概说一下,或许有不对的地方。
这是一种巧妙的方式来处理n中情况,要对这n种情况进行很合理的抽象才行。
其实,可以从位运算的一个作用来说明这个问题。
位运算一个很重要的作用,就是可以很快速的添加1,去除1(变为0)。
简单举例说明:
比如,对于一个二进制,110,我想要得到111,很显然我只需要110|111(110|001,110|011)就可以得到,可以看到这里要想得到111,我们可以的操作有n种实现(这就对应了n种可能)。

这里还有一个需要注意的,上面那些数字都是10进制的,js在进行位操作的时候自动转成2进制。

因为位操作没有怎么使用(我也没怎么用,貌似用过,但是没有达到bluebird这样),可以到网上找些资料来学习下,参考这里:

http://www.tuicool.com/articles/7bAFJr
【热门文章】
【热门文章】