“在JavaScript中做什么?
可能重复:
绝对新手指南移位?
什么是JavaScript >>>运算符,你如何使用它?
我在阅读一些代码时遇到了<<
。
1<<1 //2
2<<1 //4
3<<1 //6
3<<2 //12
从这个答案采取:
左移(<<)
整数作为一系列位存储在内存中。 例如,存储为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
变得“结束”的数字丢失了。 它不会环绕。
这是按位左移运算符。
a << b
将转向b
比特的二进制表示的左侧a
。