JavaScript でビットごとの AND 演算子を使用して数値を処理したいので、数値の 32 ビット バージョンを見つける方法を尋ねてもよろしいですか。数値は32ビットバージョンでビット単位の操作を実行すると述べました。
2 番目の質問は、JavaScript のビットごとの AND 演算子 (&) で、数値の演算は 32 ビット バージョンで実行されますよね? その後、最後に 64 ビット バージョンに変換しますか?
JavaScript でビットごとの AND 演算子を使用して数値を処理したいので、数値の 32 ビット バージョンを見つける方法を尋ねてもよろしいですか。数値は32ビットバージョンでビット単位の操作を実行すると述べました。
2 番目の質問は、JavaScript のビットごとの AND 演算子 (&) で、数値の演算は 32 ビット バージョンで実行されますよね? その後、最後に 64 ビット バージョンに変換しますか?
ECMAScript 仕様によれば、ビット演算からの戻り値は 32 ビット整数でなければなりません。関連する引用:
上記のプロダクションのビット演算子の 1 つ
A : A @ B
で@
あるプロダクションは、次のように評価されます。
- を評価
lref
した結果とするA
。- しましょ
lval
うGetValue(lref)
。- を評価
rref
した結果とするB
。- しましょ
rval
うGetValue(rref)
。- しましょ
lnum
うToInt32(lval)
。- しましょ
rnum
うToInt32(rval)
。- ビットごとの演算子
@
をlnum
andに適用した結果を返しrnum
ます。結果は符号付き 32 ビット整数です。
したがって、任意の数値を 32 ビット整数に変換するには、効果のないバイナリ演算を実行するだけです。たとえば、ここでは no-op バイナリまたは ( | 0
) を使用して float を整数に変換します。
var x = 1.2, y = 1
x = x | 0
alert(x == y) # prints "true"