&:按位与、|:按位或、^:按位异或、~:按位取反

主要针对于整数运算(转换成二进制)。

&:按位与:对应位都是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]);

你可能感兴趣的:(&:按位与、|:按位或、^:按位异或、~:按位取反)