2009-10-27 14 views
5

次のJavascript文はaに何をしますか?Javascriptで>>> =演算子とは何ですか?

a >>>= b; 
+4

本当に、その情報を見つけるためにGoogleを使用することはできませんでしたか? –

+3

グーグル ">>> ="を試しましたか? – Tinister

+19

このサイトの目標の一部は、究極のリファレンスになることです。私は簡単な質問は不適切だとは思わない。そして、Googleはクエリで ">>>"を無視します。 「演算子」または「ビット演算子」で検索することを知っておく必要があります。 –

答えて

12

それはこのように同じことを行います。そのa除き

a = a >>> b; 

は一度だけ評価される(その評価は、任意の副作用を伴う場合に観察差があります)。

>>>unsigned (logical) right shiftです。

+0

ありがとう!これは私がここで見ているいくつかの狂った複雑なエンコード/デコードコードです。 –

+1

'a'は' a = a >>> bでも '' once once "だけです。それは、それが見上げられる2回目のようなものではありません。両方の式は式の戻り値を返します。値に設定されていたのは 'a'ではありません。 –

+1

@Elijah: 'a'は単なる識別子ではなく、任意の式のプレースホルダです。 –

3

ゼロ補完の右シフトと呼ばれるビット単位の演算子です。 aのバイナリ表現をb個所右にシフトし、空のアイテムを0に置き換えます。結果はaに割り当てられます。

5

記号を維持せずに、bの値で指定されたビット数の値を右にシフトします。

権利は値をシフトする>> =演算子と似ていますが、その番号の符号は変更されません。

例:

var a = -1; 

// a now contains -1, or 11111111 11111111 11111111 11111111 binary 

var b = 1; 
a >>>= b; 

// a now contains 2147483647, or 01111111 11111111 11111111 11111111 binary. 
+0

この例を提供していただきありがとうございます! –

+0

聖なるくそ、これはいくつかの複雑なものです! o_0 – KyleFarris

0

Crockford points out JavaScriptが>>>のようなビット単位の演算子を持っている一方で、その本来の倍精度浮動小数点数にそれらを使用すると、内部で整数に前後に変換する意味あること。ネイティブの整数データ型を持つ他の言語ほど効率的ではありません。

関連する問題