javascript中的位运算,

罗浮宫群里又有讨论位运算符号|了,做过一段时间php,数据库保存布尔值数据经常用到,比如100110 就表明了六个属性的是与否,极大减少了数据量。、】

ECMAScript 中位运算跟其他语言一样的。比如:

console.log(3|10)   =>  11

3转为2进制是   (3).toString(2)   =》 11   其实应该是32位,但后两位即可表明数值,但取反会使用到   0000 0000 0000 0000 0000 0000 0000 0011

10转为2进制是   (10).toString(2)   =》 1010

11 转为2进驻是 (11).toString(2) =》 1011

 

而|,是按位或,  每个数字对比,其中一个有1,则取1,两个全为0取0

    11

1010

对比可得到  1011 转为10进制就是11

如果是按位与呢?  每个数字一样则取1,反之取0,会得到二进制的10,因为只有倒数第二位一样,取为1,最后一位取0.   转为10进制就是2。  //console.log(3&10)

其他按位异或,取反,左移,右移,都是对二进制位的操作,例子:

~3  =>  -4 。  每位取反得到 1111 1111 1111 1111 1111 1111 1111 1100 (2)  =    -100  (2)  = -4 (10)

3^10      (11 对比 1010) 取出两者每位只有1个数位,结果是  1001   得到9

还有左移右移,详细可参考W3C位运算符  http://www.w3school.com.cn/js/pro_js_operators_bitwise.asp

原文地址:https://www.cnblogs.com/henryli/p/3437292.html