在JavaScript中,<< 是位移运算符之一。它将一个数的二进制表示向左移动指定的位数。
在JavaScript中,双小于号(<<)用于进行左移操作。整数在内存中以一系列位的形式存储。例如,将数字6存储为32位整数,其表示为:
00000000 00000000 00000000 00000110
将这个位模式向左移动一位(6 << 1),将得到数字12:
00000000 00000000 00000000 00001100
可以看到,数字的每一位都向左移动了一位,并且原来最右边的一位被填充为0。还可以注意到,左移操作相当于乘以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
被移出的位将被丢弃,而不会环绕到最右边。