可能重复:
Absolute Beginner's Guide to Bit Shifting?
What is the JavaScript >>> operator and how do you use it?什么<<做在JavaScript
我碰到<<
出来,而读一些代码。
1<<1 //2
2<<1 //4
3<<1 //6
3<<2 //12
可能重复:
Absolute Beginner's Guide to Bit Shifting?
What is the JavaScript >>> operator and how do you use it?什么<<做在JavaScript
我碰到<<
出来,而读一些代码。
1<<1 //2
2<<1 //4
3<<1 //6
3<<2 //12
这是bitwise left shift operator。
a << b
将b
位移位到a
的二进制表示的左侧。
从this answer摘自:
整数被存储在存储器中,作为一系列比特。例如,存储为一个32位数字6 int
将是:
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
导致3221225472:
11000000 00000000 00000000 00000000
其被移位“关结束”的位将丢失。它不会环绕。