JavaScript位操作及其简单应用
DK 于2013,08,13发表 | 没有评论 »
1. <<
左移,即按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
数学意义:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
1 << 1 //output 2 1 << 2 //output 4
2. >>
右移,即按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。
数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。
4 >> 1 //output 2 4 >> 2 //output 1
3. & (AND)
与,即按二进制形式将所有的数字与目标数字按位进行与操作。
常见用法:通常用于二进制的取位操作,例如:一个数字&1,如果结果为0则为偶数,如果为1则为奇数。
2 & 1 //output 0 1 & 1 //output 1
4. | (OR)
或,即按二进制形式将所有的数字与目标数字按位进行或操作。
常见用法:通常用于二进制数字的无条件赋值。例如:一个数字|1,相当于与获取与当前数字最接近的奇数。
1 | 1 //output 1 2 | 1 //output 3
5. ~ (NOT)
非,即按二进制形式将所有数字取反。
常见用法: 位运算 NOT 实质上是对数字求负,然后减 1,因此 25 变 -26。
~1 //output -2
6. ^ (XOR)
异或,即按二进制形式将所有数字与目标数字对比,只有两个数字不相同即只有一个数位存放的是1的时候返回1,如两个数字相同返回0.
常见用法:xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变。可以用于简单的加密,或交互数值操作。
var a = 2, b = 3; a ^= b; b = a ^ b; a ^= b; console.log(a); //output 3 console.log(b); //output 2
转载请注明原文出处《JavaScript位操作及其简单应用》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。
分类: 编程 |