二进制 1 = 1 2 = 01 3= 001
在vue\react中 有使用 <<、 >>、& 、| 的方式
这种可以用在求状态的需求下,或者对用户角色的判断
& and
01 11
10 10
结果
00 10
在位数都是1时 得到1,其余为0
eg: 判断是否时2的幂
n & (n-1) === 0 即: 设为16, 10000 与 01111 = 0 ; 设为15, 01111 与 1110 = 1110
2的幂
是否是 奇数: if(n & 1)
^ 异或
两个数不同,返回两数相加数,相同返回0
异或可以用来找一堆数据中 不相同的数,a^b^b === a^(b^b) 得到的结果是a
只出现一次的数
| or
当对一对数位执行位运算 OR 时,如果其中一位是 1 则返回 1:
<< 向左推
这是零填充的左移。一个或多个零数位从右被推入,最左侧的数位被移除
>> 向右推
这是保留符号的右移。最左侧的数位被从左侧推入,最右侧的数位被移出:
位运算 - 权限管理
// vuelet [STYLE, CLASS, IMG] = [1, 1 << 1, 1 << 2]//添加 授权let VNode = STYLE | CLASS;//判断console.log("包含STYLE属性?", !!(VNode & STYLE));console.log("包含CLASS属性?", !!(VNode & CLASS));console.log("包含IMG属性?", !!(VNode & IMG));// 删除VNode ^= CLASSconsole.log("包含CLASS属性?", !!(VNode & CLASS));
