可能重复:
>> in javascript
我正在浏览一些代码,我遇到了两个奇怪的运算符:>>
和<<
,
以2<<3
和442132132>>546542132
。
我推断x<<y
代表x
2
次y
次4<<3
。含义4*(Math.pow(2,3))
为32
,即x>>y
,但我找不到0
的含义。
我知道它通常会返回{{1}}的小数字,但是当涉及高数字时,结果通常是一个很小的数字。
答案 0 :(得分:6)
来自Mozilla:
对于只有32位宽的数字,左移a&lt;&lt; b将二进制表示b(<32)位移位到 左边,从右边移动零。
签署权利 移动&gt;&gt; b将二进制表示b(&lt; 32)位移位到 对,丢弃的位被移开。
442132132>>546542132
似乎过多。
答案 1 :(得分:6)
>>
operator将左侧值右移位。
a >> b
相当于parseInt(a / Math.pow(2, b))
。
例如:
1 >> 0 == 1
4 >> 1 == 2
6 >> 1 == 3
42 >> 3 == 5
0x120 >> 4 == 0x12
0x129 >> 4 == 0x12
0x12f >> 4 == 0x12
0x130 >> 4 == 0x13
答案 2 :(得分:1)
<<
是按位左操作符,>>
是按位右操作符。
这些将等式一侧的值移动到另一侧的值。
答案 3 :(得分:1)
它被转换为二进制,然后向左或向右移动。像2 << 3
:
0000010
变为:
0010000
如果您将其转换回来,则为16。
>>
反之亦然:(16 >> 3) === 2
。
答案 4 :(得分:1)
这些是二元移位运算符。甲
如您所知,数字在计算机中以二进制表示(6 = 110,9 = 1001等)
左位移“&lt;&lt;”将二进制数字向左移动。例如,6 << 2
移位6(即110)两个二进制数字。
另请注意,在32位环境中,32位将用于表示整数,因此6将是:
0000 0000 0000 0000 0000 0000 0000 0110
6&lt;&lt; 2(6向左移2):
0000 0000 0000 0000 0000 0000 0001 1000
6&gt;&gt; 2(6向右移2):
0000 0000 0000 0000 0000 0000 0000 0001