主要针对于整数运算(转换成二进制)。
&:按位与:对应位
都是1
则返回 1;只要有一个不是1
则返回 0;
|:按位或:对应位只要有一个
是1 就返回1;都不是1
则返回0;
^:按位异或:对应位必须一个是1一个是0
才返回1;否则返回0;
~:按位取反:对应位1变0,0变1;(对于10进制-->巧记:当前数值 + 1 取反。)
## &
00000001 & 00000011 = 00000001
## |
00000001 | 00000011 = 00000011
## ^
00000001 ^ 00000010 = 00000011
00000001 ^ 00000011 = 00000010
##~ :对于10进制(加1取反)
~2 = -3
~-3 = 2
一、使用 &
判断奇偶性
// 因为:奇数 & 1 = 1; 偶数 & 1 = 0; 所以:
function fun(param) {
if(param & 1)
return alert('奇数');
alert('偶数');
}
二.左移位运算符
把整数a的各二进位全部左移n位,高位丢弃,低位补0。左移n位其实就是乘以2的n次方
由于左移是丢弃最高位,0补最低位,所以符号位也会被丢弃,左移出来的结果值可能会改变正负性
2<<1; //相当于 2 *= 2 // 4
2<<2; //相当于 2 *= 2^2; // 8
应用场景
快速计算一个数乘以2的n次方
三.右移位运算符
把整数a的各二进位全部右移n位,保持符号位不变。右移n位其实就是除以2的n次方
为正数时, 符号位为0,最高位补0
为负数时,符号位为1,最高位是补0或是补1
取决于编译系统的规定
2>>1; //相当于 2 /= 2 // 1
4>>2; //相当于 4 /= 2^2 // 1
应用场景
- 1、快速计算一个数除以2的n次方;
- 2、从数组中随机取某一个元素
let array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
console.log(array[(Math.random() * array.length) >> 0]);