3

这个运算符在 JavaScript 中是如何工作的。发现自https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String#Non-native_methods

var s = 12;
s>>=1;
console.log( s );
s>>=1;
console.log( s );
s>>=1;
console.log( s );

我得到结果 "6,3,1" 。我很好奇它的工作原理。

4

3 回答 3

8

>>=执行按位右二进制移位,并将结果分配回左侧操作数。

12      is 0b1100
12 >> 1 is 0b0110 (6)
 6 >> 1 is 0b0011 (3)
 3 >> 1 is 0b0001 (1)

请注意,单个位右移等效于“整数除以二”操作。

在 JS 中,所有按位运算(除了>>>)都隐式地将左侧操作数转换为有符号的 32 位数字。>>>操作例为无符号32 位数字。

于 2013-05-07T11:47:16.877 回答
6

它是一个右移运算符。 12在二进制中1100,右移 1 个位置是01106右移 1 个位置是0011,最后一个右移给你0001

于 2013-05-07T11:47:08.467 回答
3

正如其他人所指出的,这是一个右移操作

等于写

s = s >> 1

所以它主要是一个捷径。

于 2013-05-07T11:49:06.790 回答