1

可能重复:
绝对初学者的位移指南?
什么是 JavaScript >>> 运算符以及如何使用它?

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

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

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

    2 回答 2

    4

    取自这个答案


    左移 (<<)

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

    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
    

    “结束”移动的数字丢失了。它不会环绕。

    于 2012-08-29T01:28:15.743 回答
    1

    这是按位左移运算符

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

    于 2012-08-29T01:27:23.087 回答