2013-05-07 32 views
3

此运算符如何在JavaScript中工作?从https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String#Non-native_methods>> =如何在JavaScript中工作

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

我得到结果“6,3,1”。我很好奇它的工作。

+2

请阅读文档:https://developer.mozilla.org/zh-CN/docs/JavaScript/Reference/Operators/Bitwise_Operators – kapa 2013-05-07 11:48:16

+0

它是如何工作的?或者它有什么作用? – nnnnnn 2013-05-07 11:49:21

+1

我认为像这样的问题应该立即关闭......而且人们都在赞同它。我们应该在这里复制整个血腥的文档还是只教人们如何阅读?我的意思是,现在我应该问一个关于'<<=' or '> >>'的问题吗? – kapa 2013-05-07 11:52:52

回答

8

>>=执行按位正确的二进制移位,并将结果返回给左手操作数。

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

请注意,单位右移相当于“整数除以2”的操作。

在JS中,所有按位运算(>>>除外)都将左操作数隐式转换为带符号的32位数字。 >>>操作案例为一个未签名的 32位数字。

+0

,你打败了我;)绝对正确。 – smassey 2013-05-07 11:49:01

+1

这是真正的好解释。 – rab 2013-05-07 11:50:17

6

它是一个右移运算符。 12二进制是1100,右移1位是0110这就是6,右移1个位置是0011,最后右移给你0001

+0

@PaulS。严格来说,_any_类型的按位操作使用JS内部的'GetValue'操作。这不是特定于'string'变量。 – Alnitak 2013-05-07 11:51:07

+0

@Alnitak见步骤'5' [here](http://es5.github.io/#x11.7.2),它使用['ToInt32'](http://es5.github.io/#x9)。 5) – 2013-05-07 11:53:36

+1

@PaulS。是的,的确,在步骤2调用'GetValue'之后,这并不是特定于字符串操作数_。 – Alnitak 2013-05-07 11:54:20

相关问题