我可以问如何找到数字的 32 位版本,因为我想在 JavaScript 中使用按位 AND 运算符处理数字。它表示这些数字在 32 位版本中执行按位运算。
第二个问题是在 JavaScript 按位与运算符(&)中,数字的运算在 32 位版本中执行,对吗?那么最后它会将其转换回 64 位版本吗?
我可以问如何找到数字的 32 位版本,因为我想在 JavaScript 中使用按位 AND 运算符处理数字。它表示这些数字在 32 位版本中执行按位运算。
第二个问题是在 JavaScript 按位与运算符(&)中,数字的运算在 32 位版本中执行,对吗?那么最后它会将其转换回 64 位版本吗?
根据ECMAScript 规范,按位运算的返回值必须是 32 位整数。相关报价:
产生
A : A @ B
式@
是上述产生式中的位运算符之一,其评估如下:
- 让
lref
是评估的结果A
。- 让。
lval
_GetValue(lref)
- 让
rref
是评估的结果B
。- 让。
rval
_GetValue(rref)
- 让。
lnum
_ToInt32(lval)
- 让。
rnum
_ToInt32(rval)
- 返回将按位运算符
@
应用于lnum
and的结果rnum
。结果是一个带符号的 32 位整数。
因此,要将任何数字转换为 32 位整数,只需执行无效的二进制操作即可。例如,在这里我使用无操作二进制或 ( | 0
) 将浮点数转换为整数:
var x = 1.2, y = 1
x = x | 0
alert(x == y) # prints "true"