左移运算由两个小于号表示(<<)。它把数字中的所有数位向左移动指定的数量。例如,把数字 2(等于二进制中的 10)左移 5 位,结果为 64(等于二进制中的 1000000)

    1. var iOld = 3; // e二进制 11
    2. var iNew = iOld <<5; // 1100000 十进制3*2^5 = 96

    注意**:在左移数位时,数字右边多出 5 个空位。左移运算用 0 填充这些空位,使结果成为完整的 32 位数字。
    注意:左移运算保留数字的符号位。例如,如果把 -2 左移 5 位,得到的是 -64,而不是 64符号仍然存储在第 32 位中吗?是的,不过这在 ECMAScript 后台进行,开发者不能直接访问第 32 个数位。即使输出二进制字符串形式的负数,显示的也是负号形式(例如,-2 **将显示 -10。)
    高位左移后溢出,舍弃。
    左移一位相当于该数乘以2,左移2位相当于该数乘以2^2=4。上面举的例子15<< 2=60,即乘了4。但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。

    image.png
    因为位运算比×用算快,所以可对一下代码进行优化

    1. x=x×2;
    2. //优化
    3. x=x<<1;