【问题标题】:what does << do in javascript [duplicate]<<在javascript中做了什么[重复]
【发布时间】:2012-08-29 01:25:48
【问题描述】:

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

我在阅读一些代码时遇到了&lt;&lt;

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

  • 这叫什么?
  • 这是做什么的?
  • 【问题讨论】:

      标签: javascript


      【解决方案1】:

      取自this answer


      左移 (

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

      00000000 00000000 00000000 00000110
      

      将此位模式向左移动一位 (6 &lt;&lt; 1) 将得到数字 12:

      00000000 00000000 00000000 00001100
      

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

      非循环移位

      请注意,这些不是循环移位。将此值向左移动一位 (3,758,096,384 &lt;&lt; 1):

      11100000 00000000 00000000 00000000
      

      结果为 3,221,225,472:

      11000000 00000000 00000000 00000000
      

      “最后”移位的数字丢失了。它不会环绕。

      【讨论】:

        【解决方案2】:

        这是bitwise left shift operator

        a &lt;&lt; b 会将b 位移动到a 的二进制表示的左侧。

        【讨论】:

          猜你喜欢
          • 2012-02-26
          • 2013-01-16
          • 2011-01-02
          • 2020-03-19
          • 1970-01-01
          • 1970-01-01
          • 2012-02-12
          • 2011-07-24
          相关资源
          最近更新 更多