什么<<在javascript中做

时间:2012-08-29 01:25:49

标签: javascript

  

可能重复:
  Absolute Beginner's Guide to Bit Shifting?
  What is the JavaScript >>> operator and how do you use it?

我在阅读一些代码时遇到了<<

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

  • 这叫什么?
  • 这是做什么的?
  • 2 个答案:

    答案 0 :(得分:4)

    取自this answer


    左移(&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; h2&gt;

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

    00000000 00000000 00000000 00000110
    

    将此位模式移到左侧的一个位置(6 << 1)会产生数字12:

    00000000 00000000 00000000 00001100
    

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

    非循环移位

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

    11100000 00000000 00000000 00000000
    

    结果为3,221,225,472:

    11000000 00000000 00000000 00000000
    

    “失去结束”的数字将丢失。它没有环绕。

    答案 1 :(得分:1)

    这是bitwise left shift operator

    a << b会将b位移到a二进制表示的左侧。