Javascript 里<<有什么用

what does << do in javascript

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Absolute Beginner's Guide to Bit Shifting?
What is the JavaScript >>> operator and how do you use it?

我在读代码的时候遇到了<<

1
2
3
4
1<<1 //2
2<<1 //4
3<<1 //6
3<<2 //12

  • 这叫什么?
  • 这是做什么的?

  • 摘自此答案:

    左移(<)

    整数以一系列位的形式存储在内存中。例如,存储为32位int的数字6是:

    1
    00000000 00000000 00000000 00000110

    将该位模式向左移动一个位置(6 << 1将导致数字12:

    1
    00000000 00000000 00000000 00001100

    如您所见,数字向左移动了一个位置,右边的最后一个数字填充了一个零。您还可能注意到向左移位等于乘以2的幂。因此,6 << 1相当于6 * 26 << 3相当于6 * 8。如果可能的话,一个好的优化编译器会用移位代替乘法。

    非圆位移

    请注意,这些不是循环移位。将该值向左移动一个位置(3,758,096,384 << 1

    1
    11100000 00000000 00000000 00000000

    结果3221225472:

    1
    11000000 00000000 00000000 00000000

    "偏离末尾"的数字丢失。它不缠绕。


    它是按位左移位运算符。

    a << b将把b位移到a二进制表示的左边。