2

JavaScript でビットごとの AND 演算子を使用して数値を処理したいので、数値の 32 ビット バージョンを見つける方法を尋ねてもよろしいですか。数値は32ビットバージョンでビット単位の操作を実行すると述べました。

2 番目の質問は、JavaScript のビットごとの AND 演算子 (&) で、数値の演算は 32 ビット バージョンで実行されますよね? その後、最後に 64 ビット バージョンに変換しますか?

4

1 に答える 1

5

ECMAScript 仕様によれば、ビット演算からの戻り値は 32 ビット整数でなければなりません。関連する引用:

上記のプロダクションのビット演算子の 1 つA : A @ B@あるプロダクションは、次のように評価されます。

  1. を評価lrefした結果とするA
  2. しましょlvalGetValue(lref)
  3. を評価rrefした結果とするB
  4. しましょrvalGetValue(rref)
  5. しましょlnumToInt32(lval)
  6. しましょrnumToInt32(rval)
  7. ビットごとの演算子@lnumandに適用した結果を返しrnumます。

結果は符号付き 32 ビット整数です。

したがって、任意の数値を 32 ビット整数に変換するには、効果のないバイナリ演算を実行するだけです。たとえば、ここでは no-op バイナリまたは ( | 0) を使用して float を整数に変換します。

var x = 1.2, y = 1
x = x | 0
alert(x == y) # prints "true"
于 2011-06-12T02:47:20.583 に答える