duuliy

位运算

2017-3-5

运算符

运算符就是直接进行二进制运算, 因此速度会非常快. 但是对于JavaScript来说, 执行环境一般接触不到硬件.

 let num = 10;
 let num2 = ~num;

  // ~num 效果同下
  num2 = -num - 1;

  console.log(num2); // -11

用二进制表示3,然后向左移动3位,高位移出(舍弃),低位的空位补零。

  let num = 3;
  let num2 = num << 3;

  // 效果同下
  num2 = num * 4;

  console.log(num2); // 8

低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。

  let num = 1;
  let num2 = num >> 1;

  // 效果同下
  // num2 = num / 4;

  console.log(num2) // 3
    //无符号运算符由 ( >>> ) 符号表示, 对于正数无符号右位移运算符跟无符号右位移
    //运算符规则相同; 负数时会出现无限大的数值, 所以决定使用无符号右位移运算符
    //时一定要小心.