【发布时间】:2012-08-29 01:25:48
【问题描述】:
可能重复:
Absolute Beginner's Guide to Bit Shifting?
What is the JavaScript >>> operator and how do you use it?
我在阅读一些代码时遇到了<<。
1<<1 //2
2<<1 //4
3<<1 //6
3<<2 //12
【问题讨论】:
标签: javascript
可能重复:
Absolute Beginner's Guide to Bit Shifting?
What is the JavaScript >>> operator and how do you use it?
我在阅读一些代码时遇到了<<。
1<<1 //2
2<<1 //4
3<<1 //6
3<<2 //12
【问题讨论】:
标签: javascript
取自this answer:
整数作为一系列位存储在内存中。例如,存储为 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
“最后”移位的数字丢失了。它不会环绕。
【讨论】:
这是bitwise left shift operator。
a << b 会将b 位移动到a 的二进制表示的左侧。
【讨论】: