2

我可以问如何找到数字的 32 位版本,因为我想在 JavaScript 中使用按位 AND 运算符处理数字。它表示这些数字在 32 位版本中执行按位运算。

第二个问题是在 JavaScript 按位与运算符(&)中,数字的运算在 32 位版本中执行,对吗?那么最后它会将其转换回 64 位版本吗?

4

1 回答 1

5

根据ECMAScript 规范,按位运算的返回值必须是 32 位整数。相关报价:

产生A : A @ B@是上述产生式中的位运算符之一,其评估如下:

  1. lref是评估的结果A
  2. 让。lval_GetValue(lref)
  3. rref是评估的结果B
  4. 让。rval_GetValue(rref)
  5. 让。lnum_ToInt32(lval)
  6. 让。rnum_ToInt32(rval)
  7. 返回将按位运算符@应用于lnumand的结果rnum

结果是一个带符号的 32 位整数。

因此,要将任何数字转换为 32 位整数,只需执行无效的二进制操作即可。例如,在这里我使用无操作二进制或 ( | 0) 将浮点数转换为整数:

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